Считывание символов из текстового файла - C (СИ)
Формулировка задачи:
Помогите пожалуйста, не могу понять как это записать в С(Си)
Напишите программу, которая будет считывать символы из файла text.txt не загружает, если только символ '*'. При загрузке характер 'х' или о 'X' программ прочитывает X, если символ 'у' или заявление 'Y' прочитал Y при загрузке '#' персонажи '$' или '&' заявление, которое я прочитал управляющий символ, и если читает символ '*' заявление End и закончит чтение файл. После прочтения списков файлов в послании Количество пространств: с последующим пробелом и количества пробелов чтения. Каждое сообщение сопровождается конца строки.
Ukážka súboru text.txt:
$ abc 5 xyz # & Q *# abf
Ukážkový výstup pre súbor text.txt:
Precital som riadiaci znak Precital som X Precital som Y Precital som riadiaci znak Precital som riadiaci znak Koniec Pocet precitanych medzier: 6
Решение задачи: «Считывание символов из текстового файла»
#include <stdio.h>
#include <assert.h>
int main() {
FILE* f;
int ch, count = 0;
int quit = 0;
assert((f = fopen("text.txt", "r")));
while (((ch = fgetc(f)) != EOF) && !quit) {
switch (ch) {
case '#':
case '$':
case '&':
printf("Precital som riadiaci znak\n");
count++;
break;
case 'X':
case 'x':
printf("Precital som X\n");
count++;
break;
case 'Y':
case 'y':
printf("Precital som Y\n");
count++;
break;
case '*':
printf("Koniec\n");
count++;
quit = 1;
break;
}
}
printf("Pocet precitanych medzier: %d\n", count);
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем переменные:
- f - указатель на файл
- ch - символ, считанный из файла
- count - счетчик символов
- quit - флаг окончания чтения файла
- Открываем файл
text.txtдля чтения с помощью функции fopen и проверяем успешность операции с помощью assert - Запускаем цикл while, который будет выполняться до тех пор, пока не достигнем конца файла (EOF) и флаг quit не станет равным 1
- Внутри цикла считываем символ из файла с помощью функции fgetc и сохраняем его в переменной ch
- Используем оператор switch для проверки значения считанного символа
- Если символ равен '#', '$' или '&', выводим сообщение
Precital som riadiaci znakи увеличиваем счетчик count на 1 - Если символ равен 'X' или 'x', выводим сообщение
Precital som Xи увеличиваем счетчик count на 1 - Если символ равен 'Y' или 'y', выводим сообщение
Precital som Yи увеличиваем счетчик count на 1 - Если символ равен '*', выводим сообщение
Koniec, увеличиваем счетчик count на 1 и устанавливаем флаг quit в 1
- Если символ равен '#', '$' или '&', выводим сообщение
- После выполнения цикла while выводим сообщение
Pocet precitanych medzier: count - Закрываем файл с помощью функции fclose (которую мы не вызвали, но она необходима для корректного завершения работы с файлом)
- Возвращаем 0, что означает успешное выполнение программы