Перейти к содержанию

вывод в фаил, непонимаю


Рекомендуемые сообщения

#include <stdio.h>

#include <string.h>

int main() {

FILE *fp, *fo;

char chr[1], *filename, *outfile;

filename="c:\\mur.txt";

if ((fp=fopen(filename,"r"))==0) {printf("error, drink poison\n");return 1;}

else {printf("file opened, afftar peshi ischo\n");}

outfile="c:\\mur2.txt";

if ((fo=fopen(outfile,"w"))==0) {printf("error, f dibagg\n");return 1;}

else {printf("maybe, it's working\n");}

while (!feof(fp))

{fgets(chr,2,fp);fputs(chr,fo);}

fputs("\nKROSAV4EGI!!!",fo);

fclose(fp);fclose(fo);

return 0;

}

Интересует такой момент, задача проги - прочесть файл (как сказал препод посимвольно, для оптимизации! А то памяти мало)

так вот прочитать файл и вывести его содержимое в другой файл, и добавить в конце что-нибудь. Задача вобщем выполнена, только я не могу понять одного, почему в новый файл записывается старый файл и в конце добавляется символ ещё один раз!!! Как боротся? Sad

входной файл:

PREVED

Выходной файл:

PREVEDD

KROSAV4EGI!!!

Ссылка на комментарий
Поделиться на другие сайты

while (!feof(fp))

{fgets(chr,2,fp);fputs(chr,fo);}

замените на

chr = fgetc(fp);

while (chr != EOF)

{

fputc(chr, fo);

printf ("%c\n", chr);

chr = fgetc(fp);

}

только надо char chr[1] сменить на char chr, смысла держать массив здесь никакого, равно как и пользоваться строковыми функциями.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...