Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посимвольный вывод на экран строки 
:(
    Опции темы
Russs
Дата 28.5.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 15.4.2007

Репутация: нет
Всего: нет



Код


void main(){
clrscr();
FILE*f;
f=fopen("f.txt","r");
int i=0;
char x;
while(!feof(f)){
fscanf(f,"%c",&x);
i++;
cout<<x;
}
fclose(f);
getch();}



В файле записано TEST, а на экран выводи TESTT
Почему? В чем ошибка?  smile  
Помогите плиз!

Это сообщение отредактировал(а) Russs - 28.5.2007, 23:30
PM MAIL   Вверх
ama_kid
Дата 29.5.2007, 16:01 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 2
Всего: 95



feof возвращает true после считывания с конца файла... Поэтому правильнее будет так:
Код
void main(){
clrscr();
FILE*f;
f=fopen("f.txt","r");
int i=0;
char x;
while(1){
fscanf(f,"%c",&x);
if (feof(f)) break;
i++;
cout<<x;
}
fclose(f);
getch();}



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
JackYF
Дата 29.5.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Как вариант того, но без while (1):

Код

void main(){
clrscr();
FILE*f;
f=fopen("f.txt","r");
int i=0;
char x;
while( fscanf(f,"%c",&x), !feof(f) )
{
i++;
cout<<x;
}
fclose(f);
getch();}





--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
DigitSphinx
Дата 29.5.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



Код

FILE * f;
f = fopen("f.txt","r");
char x;
while(fscanf(f,"%c",&x) != -1)
    cout<<x;
fclose(f);
getch();



--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Oleg_Ci
Дата 29.5.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 3
Всего: 30



Да...
У DigitSphinx, лучше всех вариант  smile

Добавлено через 2 минуты и 56 секунд
Можно так ещё  smile 
Код

while(fscanf(f,"%c",&x) > 0 )

PM MAIL   Вверх
JackYF
Дата 29.5.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(DigitSphinx @  29.5.2007,  17:19 Найти цитируемый пост)
while(fscanf(f,"%c",&x) != -1)


лучше EOF:

Код

while(fscanf(f,"%c",&x) != EOF)


Добавлено через 6 минут и 49 секунд
Цитата(Oleg_Ci @  29.5.2007,  17:48 Найти цитируемый пост)
Можно так ещё  smile 
while(fscanf(f,"%c",&x) > 0 )


мдя.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
zkv
Дата 29.5.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(JackYF @  29.5.2007,  17:51 Найти цитируемый пост)
лучше EOF:

а может еще корректнее 
Код

while(fscanf(f,"%c",&x) == 1 )
 ?  smile 
так как fscanf возвращает количество прочитанных элементов.
PM MAIL   Вверх
DigitSphinx
Дата 29.5.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



Цитата

У DigitSphinx, лучше всех вариант  

ГЫ  спс smile 
В этом случае ("%c") вариант zkv Дает максимальную защиту от глюков !  smile 

Это сообщение отредактировал(а) DigitSphinx - 29.5.2007, 18:36


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
JackYF
Дата 29.5.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Код

RETURN VALUE
       These functions return the number of input items successfully matched and assigned, which can be fewer than provided for, or even zero
       in the event of an early matching failure.

       The value EOF is returned if the end of input is reached before the first successful conversion or matching failure  occurs.   EOF  is
       also  returned if a read error occurs, in which case the error indicator for the stream (see ferror(3)) is set, and errno is set indi-
       cate the error.



EOF, имхо, надежнее здесь проверять.

Добавлено через 36 секунд
Цитата(DigitSphinx @  29.5.2007,  18:31 Найти цитируемый пост)
Дает максимальную защиту от глюков !  smile 


 smile Как в рекламе, блин.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Russs
Дата 29.5.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 15.4.2007

Репутация: нет
Всего: нет



Всем огромное спасибо! Я вчера сделал сам, так же как посоветовал zkv.  smile 

Это сообщение отредактировал(а) Russs - 29.5.2007, 20:09
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0921 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.