Чтение всех строк из файла и вывод их на экран - C (СИ)
Формулировка задачи:
Помогите пожалуйста... Я ни как не могу заставить программу читать строки, которые Я пропишу в файл...
Вот у Меня есть некий файл. В нём 5 строк, каждая строка состоит ровно из 10 символов.
У Меня получилось считать лишь 1 строку.
Если обьявить цикл while (file) {...}, то, вроде бы как, переход к след. строке файла должен осуществляться сам. Однако, при запуске программы, когда, как бы, файл бы загружен, у Меня выводится бесконечно одна и та же строка...
Подскажите, в чём проблема?
Программа будет читать 1 строку, если же использовать след. код:
Программа прочитает уже 2 строки (т.е. 1-я и 2-я)...
Значит - ошибка не в чтении строк, а в цикле while (file)... Хотя - в чём ошибка - так и не понял... По логике - цикл будет продолжатся до тех пор, пока файл не закончится(т.е. до конца файла)... Однако, опять же, цикл у Меня идёт бесконечный...
#include "stdafx.h" #include <iostream> #include <Windows.h> #include <stdio.h> FILE* File=NULL; char FileWay[255]; char Vivod[255]; int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"Russian"); system("cls"); File=fopen("text.txt", "r"); if (File==NULL) puts("Загрузка файла завершена с ошибкой!"); else { while (File) { fscanf(File,"%[^\n]",Vivod);//Вот здесь происходит чтение(как Я понял - тут идёт чтение до тех пор, пока не будет указан переход на след. строку) //Однако, данный цикл продолжается бесконечно, и на экран будет выводится всё время один и тот же текст(т.е. 1-я строка) printf("%s\n", Vivod); } fclose(File); } system("pause"); return 0; }
Заметил, что если использовать след. код:
while (true) { fscanf(File, "%[^\n]", Vivod); std::cout<<Vivod<<std::endl; break; } fclose(File);
while (true) { fscanf(File, "%[^\n]", Vivod); std::cout<<Vivod<<std::endl; fscanf(File, "%[^\n]", Vivod); std::cout<<Vivod<<std::endl; break; } fclose(File);
Однако, когда использую код fscanf(File, "%[^\n]", Vivod); - загружается вся строка, а когда fscanf(File, "%s\n", Vivod); - лишь до 1-го пробела
Решение задачи: «Чтение всех строк из файла и вывод их на экран»
textual
Листинг программы
#include<stdio.h> int main() { char array[80]; FILE *file = fopen("text.txt", "r"); while( fscanf(file, "%79[^\n]\n", array) == 1 ) { printf("%s\n", array); } fclose(file); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и вывода на экран
- Объявление переменной
array
типаchar
с длиной 80 символов - Открытие файла
text.txt
в режиме чтения с помощью функцииfopen
- Запуск цикла
while
, который будет выполняться до тех пор, пока функцияfscanf
успешно считывает строку из файла - В каждой итерации цикла, функция
fscanf
считывает строку из файла, используя форматный параметр%79[^\n]\n
, который считывает все символы, кроме символа новой строки, и добавляет символ новой строки после считывания - Считанная строка сохраняется в переменной
array
- С помощью функции
printf
выводится содержимое переменнойarray
(считанная строка) и символ новой строки - После завершения цикла, файл закрывается с помощью функции
fclose
- Программа возвращает 0, что означает успешное завершение работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д