В текстовом файле подсчитать количество строк, которые начинаются и заканчиваются одной и той же буквой - 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();
}

Объяснение кода листинга программы

  1. Объединение всех необходимых заголовочных файлов.
  2. Создание указателя на файл и его открытие в режиме чтения.
  3. Создание массива символов для считывания строки из файла.
  4. Инициализация переменных: счётчика строк и длины строки.
  5. Установка текущей локали на русскую.
  6. Вывод на экран сообщение с просьбой указать файл.
  7. Ввод имени файла с помощью функции fgets.
  8. Считывание строки из файла в массив символов до конца строки.
  9. Удаление символа новой строки из последней позиции массива.
  10. Проверка, является ли первый и последний символ строки одинаковыми.
  11. Если условие выполняется, то увеличивается счётчик строк.
  12. После окончания цикла, выводится на экран количество строк, удовлетворяющих условию.
  13. Закрытие файла.
  14. Если файл не удалось открыть, то выводится сообщение об ошибке.
  15. Ожидание нажатия клавиши для выхода из программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы