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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> getchar(), getc() - чистка буффера. \n осталвляют за собой 
:(
    Опции темы
ressac
Дата 31.3.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



... получается что getchar и getc оставляют за собой '\n' в буффере  как и scanf(); и за ними надо почистить буффер иначе если не дай бог следующей инструкцией будет gets() , то всё полетит к чертям. так это или нет? , а то что-то я запутался. :(
PM MAIL   Вверх
_Natalia_
Дата 31.3.2007, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а это для того чтобы из файла прочитать или из стандартного stdinа? потому что если из файла - то не понятно, а если из stdin, тогда почему бы обычным cin не попробывать? ну а для очистки буфера - cin.ignore(100,'\n') к примеру 
PM MAIL   Вверх
ressac
Дата 31.3.2007, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



_Natalia_, я С++ не знаю, пока только С smile

это из stdin.
а разве getchar умеет читать из файла?
PM MAIL   Вверх
_Natalia_
Дата 31.3.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



умеет, ему вообще без разницы откуда читать, и тем более что stdin это такой же файловый дескриптор, как и для файлов.
ну а по идеи то ignore в твоем случае должен сработать
PM MAIL   Вверх
ressac
Дата 31.3.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну не знаю, может это в с++ он читает что хочет а в С нет, так как только что попробовал и компиль говорит что слишком много аргументов в гетчаре...

по крайней мере так не пашет...
Код

c=getchar(stream); //stream это указатель на файл. 


посмотри прототип тут  http://www.phim.unibe.ch/comp_doc/c_manual...NS/getchar.html
PM MAIL   Вверх
drZmeu
  Дата 31.3.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Правильно что непашет getchar принимает символы с клавиатуры и заносит их в буфер! Напр:

Код

#include <stdio.h>
int main(void)
{
char b[1];
b=getchar();
printf("Buf: (%s)",b);
getchar();
return 0;
}

Если мне конечно память неизменяет.
--------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code]
PM MAIL   Вверх
_Natalia_
Дата 31.3.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хм... да, сейчас почитала, он только для stdin, извиняйте

Так, а теперь объясни мне что тебе было нужно? если ты не хочешь чтобы оставался '\n', тогда у тебя нет выбора, придется делать while (getchar() != '\n'), к тому же может получится, что у тебя на вводе будет не один символ, а больше (ну ошибка пользователя, или еще что).

PM MAIL   Вверх
0lmer
Дата 31.3.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

если не дай бог следующей инструкцией будет gets() , то всё полетит к чертям.


если в буфере перед gets() остается '\n' я обычно ставлю перед gets() getchar() или cin.get(). 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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