В текстовом файле подсчитать количество строк, которые начинаются и заканчиваются одной и той же буквой - 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.
- Считывание строки из файла в массив символов до конца строки.
- Удаление символа новой строки из последней позиции массива.
- Проверка, является ли первый и последний символ строки одинаковыми.
- Если условие выполняется, то увеличивается счётчик строк.
- После окончания цикла, выводится на экран количество строк, удовлетворяющих условию.
- Закрытие файла.
- Если файл не удалось открыть, то выводится сообщение об ошибке.
- Ожидание нажатия клавиши для выхода из программы.