Из вводимых строк найти слова, у которых заданный символ встречается дважды - Не работает 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д