kasak Опубликовано 18 марта, 2006 Жалоба Поделиться Опубликовано 18 марта, 2006 #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; } Интересует такой момент, задача проги - прочесть файл (как сказал препод посимвольно, для оптимизации! А то памяти мало) так вот прочитать файл и вывести его содержимое в другой файл, и добавить в конце что-нибудь. Задача вобщем выполнена, только я не могу понять одного, почему в новый файл записывается старый файл и в конце добавляется символ ещё один раз!!! Как боротся? входной файл: PREVED Выходной файл: PREVEDD KROSAV4EGI!!! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ineu Опубликовано 18 марта, 2006 Жалоба Поделиться Опубликовано 18 марта, 2006 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, смысла держать массив здесь никакого, равно как и пользоваться строковыми функциями. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.