В текстовом файле каждую вторую строку разбить на слова - C (СИ)
Формулировка задачи:
Задача:в текстовом файле каждую вторую строку разбить на слова.Результат вывести в другой файл.
С помощью strtok уже сделал,решил попробовать с помощью fscanf,но не могу сообразить как остановить ее в конце строки,ибо она продолжает считывать весь файл до конца,по словам.Что прописать в условии while в строке 12?
#include <stdio.h>
int main()
{
int n = 1;
char s[80];
FILE *fin, *fout;
fin = fopen("Input.txt", "r");
fout = fopen("Output.txt", "w");
while(!feof(fin)){
if(n % 2 == 0){
while(?){
fscanf(fin, "%s", s);
fprintf(fout, "%s\n", s);
}
n++;
}
else
fgets(s, 80, fin);
fprintf(fout, "%s", s);
n++;
}
fclose(fin);
fclose(fout);
return 0;
}Решение задачи: «В текстовом файле каждую вторую строку разбить на слова»
textual
Листинг программы
while(!feof(fin))
Объяснение кода листинга программы
- Открывается файл
finдля чтения - Создается пустой массив
lineдля хранения строк из файла - Считывается первая строка из файла и сохраняется в массиве
line - Если файл не закончился (feof(fin) == 0), то переходим к следующему шагу, иначе выходим из цикла
- Считывается вторая строка из файла и сохраняется в массиве
line - Если файл не закончился (feof(fin) == 0), то переходим к следующему шагу, иначе выходим из цикла
- Массив
lineразбивается на слова и сохраняется в массивеword - Если файл не закончился (feof(fin) == 0), то переходим к следующему шагу, иначе выходим из цикла
- Каждое слово из массива
wordвыводится на экран - Перемещается на следующую строку в файле (файловый указатель перемещается на следующую строку)
- Повторяем шаги с 3 по 9 до тех пор, пока файл не закончится (feof(fin) == 1)