Как устранить ошибку - C (СИ)
Формулировка задачи:
вообщем надо было написать программу которая
должна выяснить, встречается ли в данной строке группа символов, состоящая из трех стоящих рядом точек, которой непосредственно не предшествует точка, и за которой не следует точка. n=40
я написал
но она странным образом ничего не выводит, что делать?
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main ()
{ int i;
char a[40];
scanf ("%s", &a[i]);
if ((a[0]=='.')&&(a[2]=='.')&&(a[1]=='.')&&(a[2]!='.')) printf("Г„Г*");
if ((a[37]=='.')&&(a[39]=='.')&&(a[38]=='.')&&(a[36]!='.')) printf("Г„Г*");
for(i=2;i<=36;i++)
if ((a[i]=='.')&&(a[i+1]=='.')&&(a[i+2]=='.')&&(a[i-1]!='.')&&(a[i+3]!='.')) printf("Г„Г*");
printf("ГЌГҐГІ");
}Решение задачи: «Как устранить ошибку»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char buf[41];
char* p;
if(fgets(buf, 41, stdin) == NULL)
fputs("Input error\n", stderr), exit(1);
p = strstr(buf, "...");
while(p)
{
if(p[3] == '\0' || p[3] != '.')
puts("Yes"), exit(0);
p = strstr(p + 4, "...");
}
puts("No");
exit(0);
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками.
- Объявление двух переменных типа char: buf и p.
- Чтение строки из стандартного ввода с помощью функции fgets в массив buf.
- Поиск строки
...в списке с помощью функции strstr и присвоение адреса этой строки переменной p. - Проверка условия: если p равно NULL или p[3] не равно '.', то выводится сообщение
Yesи программа завершается с кодом 0. - Если условие не выполняется, то функция strstr вызывается снова, но уже с аргументом p+4, чтобы продолжить поиск следующей строки
... - Если условие не выполняется, то выводится сообщение
Noи программа завершается с кодом 0. - В случае, если ввод не содержит строки
...или ввод содержит несколько строк...без точек, программа завершается с кодом 1.