Из исходного файла создать два: в одном — нечетные строки, в другом — четные - 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) указывается в качестве третьего аргумента функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д