Из исходного файла создать два: в одном — нечетные строки, в другом — четные - C (СИ)
Формулировка задачи:
Доброго времени суток!
Задание : Из исходного файла создать два : в одном - нечетные строки, в другом - четные.
Вот что сам написал
Суть вопроса в том, что записав в исходный файл для примера стихотворение "Бородино", переписывание строк осуществляется не по коду конца строки а по пробелу.
как избавиться от этого?
Заранее большое спасибо!
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
void main()
{
FILE *fINP, *fPAR, *fODD;
char ninp[256],npar[256],nodd[256];
char str[256];
char eofl;
// Открытие файлов для работы : исходного(1), для записи нечетных строк(2), для записи четных строк(3).
// (1)
printf("Open data file: \n\t");
scanf("%s",ninp);
if((fINP=fopen(ninp,"rt")) == NULL)
{
printf("\n error while opening file %s \n",ninp);
getch();
exit(EXIT_SUCCESS);
}
// (2)
printf("Open file for strings with odd numbers: \n\t");
scanf("%s",nodd);
if((fODD=fopen(nodd,"wt")) == NULL)
{
printf("\n error while opening file %s \n",nodd);
getch();
exit(EXIT_SUCCESS);
}
// (3)
printf("Open file for strings with parity numbers: \n\t");
scanf("%s",npar);
if((fPAR=fopen(npar,"wt")) == NULL)
{
printf("\n error while opening file %s \n",npar);
getch();
exit(EXIT_SUCCESS);
}
// Решение задачи
while (!feof(fINP))
{
fscanf(fINP,"%s",&str);
fputs(str,fODD);
fputs("\n",fODD);
if(!feof(fINP))
{
fscanf(fINP,"%s",&str);
fputs(str,fPAR);
fputs("\n",fPAR);
}
}
// Закрытие файлов (1), (2), (3).
// (1)
if((fclose(fINP)) == NULL)
printf("\n file %s was succesfully closed! \n", ninp);
else
printf("\n error while closing file %s \n", ninp);
//(2)
if((fclose(fODD)) == NULL)
printf("\n file %s was succesfully closed! \n", nodd);
else
printf("\n error while closing file %s \n", nodd);
//(3)
if((fclose(fPAR)) == NULL)
printf("\n file %s was succesfully closed! \n", npar);
else
printf("\n error while closing file %s \n", npar);
printf("\n\t\t\a End of program \n");
getch();
}Решение задачи: «Из исходного файла создать два: в одном — нечетные строки, в другом — четные»
textual
Листинг программы
fgets(str,100,fINP);
Объяснение кода листинга программы
Код считывает строку из стандартного ввода (fINP) в строковую переменную (str), используя функцию fgets. Размер строки (100) указывается в качестве третьего аргумента функции.