Дан текстовый файл. Выяснить, имеется ли в нем строка, которая начинается с данной буквы - C (СИ)
Формулировка задачи:
Дан текстовый файл. Выяснить, имеется ли в нем строка, которая начинается с данной буквы. Если да, то напечатать ее.
Решение задачи: «Дан текстовый файл. Выяснить, имеется ли в нем строка, которая начинается с данной буквы»
textual
Листинг программы
#include <stdio.h>
#include <locale.h>
int main(void){
setlocale(LC_ALL,"RU");
FILE *file;
int c=0,a;
long int d;
char bukva;
if ((file = fopen("iii.txt", "r"))==NULL) {
printf("Невозможно открыть файл!\n");
return(0);
}
printf("Введите букву: ");
scanf("%c",&bukva);
while ((a = fgetc (file)) != EOF) {
c++;
if (c == 1) {
if(a==bukva){
printf("%c", a);
while((a=fgetc(file))!='\n'){
printf("%c", a);
}
}
}
if(a=='\n')c=0;
}
printf("\n");
fclose(file);
return(0);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с файлами и вводом-выводом
- Устанавливаем локаль на русскую, чтобы корректно работать с русскими символами
- Объявляем переменные: файловый указатель, счётчик строк, переменную для хранения символа, а также переменную для хранения целочисленного значения, которое будет использоваться для чтения символов из файла
- Проверяем, удалось ли открыть файл. Если нет, выводим сообщение об ошибке и завершаем программу
- Запрашиваем у пользователя ввод буквы, с которой необходимо начать поиск строки в файле
- Устанавливаем счётчик строк в 0
- В цикле, пока не достигнем конца файла, читаем каждый символ. Если это новая строка и предыдущий символ был равен введённой букве, то выводим текущий символ, а затем с помощью функции fgetc читаем все символы до новой строки и выводим их
- Если текущий символ — новая строка, сбрасываем счётчик строк в 0
- После завершения чтения файла закрываем его и завершаем программу