Дано целое число K и текстовый файл. Вставить пустую строку перед строкой файла с номером K. - C (СИ)
Формулировка задачи:
День добрый. Посмотрите что я неправильно делаю:
Задание: Дано целое число K и текстовый файл. Вставить пустую строку перед строкой файла с номером K. Если строки с таким номером нет, то оставить файл без изменений.
#include <stdio.h>
#include<conio.h>
void main() {
FILE *f;
int i,k;
char s[256];
clrscr();
f=fopen("C:\\lab.txt","r+");
for(i=0;i<10;i++) {
fprintf(f,"%d stroka \n",i+1);
}
puts("vvedite K: ");
scanf("%d",&k);
fseek(f,0,0);
for(i=0;fgets(s,256,f) ;i++ ) {
if ((i+1)==k) {
fprintf(f,"\n");
}
}
fseek(f,0,0);
for(i=0;i<11;i++) {
fgets(s,256,f);
puts(s); }
fclose(f);
getch();
}Решение задачи: «Дано целое число K и текстовый файл. Вставить пустую строку перед строкой файла с номером K.»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
int main()
{
FILE *ftext, *fnum, *fres;
char buf, num=0;
ftext = fopen("C:\\text.txt","r+");
fnum = fopen("C:\\number.txt","r+");
fres = fopen("C:\\res.txt","w+");
if(ftext == NULL || fnum == NULL) {perror("error"); getch(); return 1;}
fseek (ftext, 0, SEEK_SET);
fseek (fnum, 0, SEEK_SET);
buf = fgetc (ftext);
do {
if ( buf == '\n' )
{
num = fgetc(fnum);
if (num != EOF)
fputc(num,fres);
}
fputc(buf,fres);
buf = fgetc (ftext);
} while ( !feof(ftext) );
fclose(ftext); fclose(fnum); fclose(fres);
getch();
}
Объяснение кода листинга программы
В этом коде используется язык программирования C для чтения двух текстовых файлов и записи их содержимого в третий файл. Вот список действий, которые выполняются в этом коде:
- Открываются три файла:
text.txt,number.txtиres.txt. - Проверяется, открылись ли файлы успешно. Если нет, выводится сообщение об ошибке и программа закрывается.
- Устанавливается позиция чтения в начало каждого файла.
- В цикле до тех пор, пока не достигнут конец первого файла, считывается содержимое каждого файла.
- Если считанный символ из первого файла является символом новой строки, считывается следующее число из второго файла.
- Число записывается в третий файл.
- Считанный символ из первого файла записывается в третий файл.
- Файлы закрываются после завершения чтения.
- Ожидается нажатие клавиши для выхода из программы.