Сравнение символа и строки - C (СИ)
Формулировка задачи:
#include <stdio.h>
# include <string.h>
# include <stdlib.h>
# include <conio.h>
# include <stdio.h>
# include <ctype.h>
int main()
{
int i, j, la, lb, ia,ib, n;
char ch[]=".,!?;";
char min, a[80], b[80];
//clrscr();
printf("str A: ");
gets(a);
printf("\n");
printf("str B: ");
gets(b);
la = strlen(a);
lb = strlen(b);
ia = 0; ib=0;
for (i=0; i<strlen(ch); i++)
{if (strchr(a, ch[i]) != 0)
ia = 1; }
ib=0, lb=strlen(b);
for (i=0; i<=lb-1; i++)
{ for (j=i+1; j<=lb; j++)
if (b[i] == b[j]) ib = 1; }
if ((ia == 1) && (ib == 0))
{
la=strlen(a);
i=0;
for (i=0; i<=ib; i++)
if (a[i]=ch )) a[i++]=a[i];
a[i]="\0";
}
printf("Obrabotannayastroka A: ");
puts(a);
getch();
}{
la=strlen(a);
i=0;
for (i=0; i<=ib; i++)
if (a[i]=ch )) a[i++]=a[i];
a[i]="\0";
}Решение задачи: «Сравнение символа и строки»
textual
Листинг программы
// ANSI C 99
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <assert.h>
#define KILL_CHARS L",.!?-:;"
int main(void) {
wchar_t buf[BUFSIZ];
assert( setlocale(LC_ALL, "ru_RU.UTF-8") );
while ( printf("Строка: ") && fgetws(buf, BUFSIZ, stdin) && *buf != '\n' ) {
for ( wchar_t * ptr = wcspbrk(buf, KILL_CHARS); ptr; ptr = wcspbrk(ptr, KILL_CHARS) )
wmemmove(ptr, ptr + 1, wcslen(ptr));
printf("Без байды: %ls", buf);
}
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется макрос KILL_CHARS, который содержит символы, которые необходимо удалить из строки
- Устанавливается локальная настройка на русский язык с использованием функции setlocale
- Создается буфер для хранения строки
- Проверяется корректность работы программы с помощью assert
- Организуется цикл, который считывает строку от пользователя и удаляет из нее запрещенные символы с помощью функции wcspbrk
- Выводится на экран очищенная от запрещенных символов строка
- Цикл продолжается до тех пор, пока пользователь не введет пустую строку
- Программа завершается с возвратом 0