В текстовом файле подсчитать количество строк, которые начинаются и заканчиваются одной и той же буквой - C (СИ)
Формулировка задачи:
Не подскажете, в чем ошибка? Программа не правильно считает.
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- main()
- {
- FILE *fp;
- char *ch;
- int t=0;//количество строк
- int y;//длина строки
- clrscr();
- printf("\nВ текстовом файле подсчитать кол-во строк, которые");
- printf("\nначинаются и заканчиваются одной и той же буквой.\n");
- if ((fp = fopen ("1.txt","r"))!=NULL)
- {
- while ((fgets(ch,255,fp))!=NULL)
- {y=strlen(ch);
- if (ch[0]==ch[y-2]) t++;}
- printf("количество строк= %u \n",t);
- fclose(fp);
- }
- else
- printf("\nне могу открыть файл.\n");
- t=getch();
- }
Решение задачи: «В текстовом файле подсчитать количество строк, которые начинаются и заканчиваются одной и той же буквой»
textual
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <locale.h>
- #include <string.h>
- main(){
- FILE *fp;
- char ch[255];
- int t=0;//количество строк
- int y;//длина строки
- setlocale(LC_ALL, ".1251");
- // clrscr();
- printf("\nВ текстовом файле подсчитать кол-во строк, которые");
- printf("\nначинаются и заканчиваются одной и той же буквой.\n");
- if ((fp = fopen ("1.txt","r"))!=NULL){
- while ((fgets(ch,255,fp))!=NULL){
- y=strlen(ch);
- if ( ch[y - 1] == '\n' )
- ch[--y] = 0;
- if (ch[0]==ch[y-1])
- t++;
- }
- printf("количество строк= %u \n",t);
- fclose(fp);
- }
- else
- printf("\nне могу открыть файл.\n");
- t=getch();
- }
Объяснение кода листинга программы
- Объединение всех необходимых заголовочных файлов.
- Создание указателя на файл и его открытие в режиме чтения.
- Создание массива символов для считывания строки из файла.
- Инициализация переменных: счётчика строк и длины строки.
- Установка текущей локали на русскую.
- Вывод на экран сообщение с просьбой указать файл.
- Ввод имени файла с помощью функции fgets.
- Считывание строки из файла в массив символов до конца строки.
- Удаление символа новой строки из последней позиции массива.
- Проверка, является ли первый и последний символ строки одинаковыми.
- Если условие выполняется, то увеличивается счётчик строк.
- После окончания цикла, выводится на экран количество строк, удовлетворяющих условию.
- Закрытие файла.
- Если файл не удалось открыть, то выводится сообщение об ошибке.
- Ожидание нажатия клавиши для выхода из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д