Показать полную графическую версию : Замена символов
Как написать программу на Си, которая бы заменяла определенные символы,вводимые с клавиатуры, на другие (например все А на Б). Вводится типа string.
программу на Си
Вводится типа string.
Guest ты уверен? ;)
Нет. Просто на Си. Со стрингом вылетело случайно, пардон.
ну std::string то есть в Си++ как контейнер
а вообще принцип:
сделать хук на клаву.
обрабатывать поступающие коды и если че
заменять (как? отдельный разговор) )))
#include <conio.h>
int main(int argc, char* argv[])
{
*intsImp;
*for(;;)
*{
* *sImp=getch();
* *if(sImp==27)
* * *break;
* *if(sImp=='a')
* * *sImp='b';
* *if(sImp=='A')
* * *sImp='B';
* *putch(sImp);
*}
*return 0;
}
Исправлено: noname00.pas, 8:06 19-03-2003
А если сначала просто вводится, без замены (ввели какое-то предложение), а потом происходит замена и выводится уже с заменой.
#include <stdio.h>
#include <string.h>
int repl(char *source,const char*str1,const char *str2)
{
* *int len_source=strlen(source);
* *int len2=strlen(str1);
* *int len3=strlen(str2);
* *if (len_source==0||len2==0||len3==0)
* * * * *return -1;
* *if (len2!=len3)
* * * * *return -2;
* *for (int i=0;source[i]!='\0';i++)
* *{
* * * for (int j=0;j<len2;j++)
* * **if (source[i]==str1[j])
* * *{
* * * * *source[i]=str2[j];
* * *}
* *}
*return 0;
}
void main()
{
* *char str[]="This is a string ABC";
* *repl(str,"A","Z");
* *printf("%s\n",str);
}
Хотя возможно есть уже такая функция встроенная где-нибудь
Исправлено: Crew, 22:35 18-03-2003
Добавлено:
И зачем оно курсивом стало? :(
Не буду исправлять второй раз, но можно вызывать и так
repl(str,"AaW","Bbz")
меняется
A на B
a на b
W на z
Исправлено: noname00.pas, 8:06 19-03-2003
noname00.pas
19-03-2003, 11:09
Товарищи! Используйте пожалуйста тег CODE ;-)
noname00.pas
Уговорили, только курсив в коде остался
:(
noname00.pas
19-03-2003, 22:14
Это временные неполадки, которые (возможно) скоро будут устранены :-)
noname00.pas
Эээ... Это скоро уже год тянется :)
Теперь внутри [][] тэги не действуют.
noname00.pas
20-03-2003, 01:01
IvanK, а ты прочитал соответствующую тему в админском форуме?
noname00.pas
Ты не поверишь, но ты же этот вопрос поднимал и ранее (как раз около года назад), но мне было лень напрягаться и я использовал традиционную отмазу в стиле "и так удобно".
А тему я по непонятным причинам вчера не заметил, т.е. заметил только сегодня, когда уже всё было исправлено :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.