Помощь - Поиск - Пользователи - Календарь
Полная версия: Считывание символов из файла
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
sheka
#include <stdio.h>

#define debug
#ifdef debug
#include <conio.h>
#endif

main()
{
FILE *fin = fopen( "in.txt", "rb" );
char ch;
while ( !feof( fin ) )
{
fscanf( fin, "%c", &ch);
printf("%c", ch);
#ifdef debug
getch();
#endif
}
fclose( fin );
}

Почему, собственно, повторяется последний символ при выводе на экран?

А такая реализация добавляет пробел:
        ch = fgetc( fin);
putchar(ch);
IUnknown
Цитата
Почему, собственно, повторяется последний символ при выводе на экран?
Потому что:
Проблема работы с файлами

Update
Цитата
А такая реализация добавляет пробел:
Непечатный символ. Вот такой код очень хорошо это показывает:
    while ( !feof( fin ) )
{
ch = fgetc( fin);
putchar(ch);
printf("(%d)", (int)ch); /* выводим код символа */
}
sheka
#include <stdio.h>
main()
{
FILE *fin = fopen("fin.txt", "r");
FILE *fout = fopen("fout.txt", "w");
char ch;
do
if(fscanf(fin, "%c", &ch)) fprintf(fout, "%c", ch);
while (!feof(fin));
fclose(fout);
fclose(fin);
}

Все равно выдает последний символ. Почему? Ведь повторная проверка то есть.
IUnknown
   do
if(fscanf(fin, "%c", &ch) != EOF) fprintf(fout, "%c", ch);
while (!feof(fin));

?

Чувствуешь, где подвох?
sheka
А я с упорством читал EOF, а проверял на NULL (что понятное дело, тоже не работает).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.