Из вводимых строк найти слова, у которых заданный символ встречается дважды - Не работает scanf - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> #define N 80 #define M 6 int main (void) { int i=0, m=0, j=0, k=0, n=N, b=0, f=0; char st[M][N], a[]={"Intput number of arrays "},q='y', st2[M][N]={"tat"}; char l; while (q=='y') { puts(a); scanf("%d", &m); if (m<M)q='n'; else printf("\nIncorrect number, please repeat input process \n"); }; printf("Enter simbol\n"); scanf("%c", &l); \\тут scanf отказывается запускаться. printf("\nInput page \n"); for(j=0;j<m;j++) for(i=0;i<n && q!='\r' &&q!='\n';i++) scanf("%c", &q);st[j][i]=q; if(q==l)k++; if(q=='_') if(k==2) {for(b=0;b<=i;b++) {st2[j][f]=st[j][b];st[f][f+1]=' ';};f+=2;} n-=i; i=0; k=0; for (j=0;j<m;j++) for (i=0;i<n;i++) printf("%c", st2[j][i]); getch(); return 0; }
Решение задачи: «Из вводимых строк найти слова, у которых заданный символ встречается дважды - Не работает scanf»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define MATCHES_NEEDED 2 int matches_count(const char * s, char ch){ int cnt; char * found; for ( cnt = 0, found = strchr(s, ch); found; ++cnt, found = strchr(++found, ch) ) ; return cnt; } int main(void){ char ch, buf[BUFSIZ], *p, *f; printf("String: "); if ( scanf("%[^\n]%*c", buf) != 1 ){ fprintf(stderr, "Wrong input!\n"); return 1; } printf("Character: "); if ( scanf("%c", &ch) != 1 ){ fprintf(stderr, "Wrong input!\n"); return 1; } for ( p = strtok(buf, " \t\n"); p; p = strtok(NULL, " \t\n") ) if ( matches_count(p, ch) == MATCHES_NEEDED ) printf("%s\n", p); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется константа MATCHES_NEEDED, которая задает количество совпадений, необходимых для вывода строки
- Создается функция matches_count, которая считает количество совпадений заданного символа в строке
- В функции main считываются две строки: строка из стандартного ввода и символ для поиска
- Если ввод некорректен, выводится сообщение об ошибке и функция завершается с кодом 1
- Строка разделяется на слова с помощью функции strtok
- Проверяется, есть ли в каждом слове заданный символ и если да, то выводится это слово
- Функция main завершается с кодом 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д