Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > работа с файлами. Ошибка конца строки


Автор: imperceptible 9.10.2010, 08:48
Необходимо удвоить в содержимом файле каждую литеру. Вот код. Код верный. но в конце файла как признак конца строки вылезает буква "я". Как её убрать? Нужно что-то дописать под предлогом кона строки. Был вариант дописать (d!=-1), но это не помогло. Что делать?
//Программа удваивает в содержимом файла каждую букву

Код
#include <stdio.h>
void main() {
FILE *f,*g; 
char d, file[20], f_exit[20];
printf("Введите имя файла: "); 
scanf("%s", file);
printf("Введите имя выходного файла: "); 
scanf("%s", f_exit); 
f=fopen(file,"r");
g=fopen(f_exit,"w+");
printf("\nСодержимое  файла %s: ", file); 
while (!feof(f))
{ 
d=getc(f); 
if (d!=-1);
{
printf("%c",d);
fprintf(g,"%c%c",d,d); 
}
}  
fclose(g); 
printf("\nСодержимое  файла %s: ", f_exit);  
g=fopen(f_exit,"r"); 
while (!feof(g))
{
d=getc(g);
printf("%c",d); 
}
fclose(f);  
} 



Модератор: не забываем пользоваться кнопочкой "Код"

Автор: boostcoder 9.10.2010, 08:56
код отформатируй, тогда гляну smile 

Автор: imperceptible 9.10.2010, 10:24
что ты имеешь ввиду?

Автор: Crafty 9.10.2010, 14:33
imperceptible,  http://forum.vingrad.ru/forum/topic-126445.html

Автор: bsa 9.10.2010, 23:15
imperceptible, и еще это почитай: http://forum.vingrad.ru/index.php?show_type=forum&showtopic=269794&kw=faq-c++

Добавлено через 4 минуты и 9 секунд
imperceptible, fgetc возвращает значение типа int не просто так. А потому, что в случае обнаружения конца файла (а он обнаруживается при попытке прочитать достигнув его, т.е. когда ты прочитал весь файл feof еще не TRUE, она станет true только после попытки прочитать еще хотя бы один символ) эта функция возвращает значение (int)-1, которое при конвертации в unsigned char чудесным образом превращается в символ с кодом 255. А это буква "я" в одной из Windows кодировок.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)