Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2011, 23:23   #1
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию Как пишется getchar?

Где можна посмотреть код getchar ? Ну по всей логике открыть stdio.h и посмотреть, но там кроме таких вот унылых строк я ничего не нашол:
Код:
__CRT_INLINE int __cdecl __MINGW_NOTHROW getchar (void)
{
  return (--stdin->_cnt >= 0)
    ?  (int) (unsigned char) *stdin->_ptr++
    : _filbuf (stdin);
}
в интернете тоже ничего (ну я в принципе сильно не гуглил, так что за криво-поиск мне ничего не пришьете , только за ленивость)
ну все же если выше - это весь код getchar, то можете ли вы мне его обьяснить?

Всем ответившим спасибо. Лично я не могу пользоватся тем, что не понимаю.
Это ещё не конец и даже не начало конца, это возможно только конец начала.

Последний раз редактировалось pufystyj; 26.10.2011 в 23:26.
pufystyj вне форума Ответить с цитированием
Старый 26.10.2011, 23:36   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Есть объект stdin типа FILE* - указатель на стандартный поток ввода.
Дальше можно просто читать по операторам (для ясности я заменяю тернарный оператор ?: на if-else и разношу на разные строки объединённые здесь в одном выражении операции)
Код:
//Уменьшить на 1 число оставшихся символов в потоке (буфере потока)
--stdin->_cnt;
//Если в потоке были символы - т.е. осталось не меньше 0
if(stdin->_cnt >= 0){
    //Вернуть то, на что сейчас указывает stdin->_ptr
    int ret = *stdin->_ptr;
    //...но перед этим сдвинуть _ptr на одну позицию
    stdin->_ptr++;
    return ret;
//Иначе же
} else {
    //Попытаться прочитать в буфер очередную порцию информации
    int ret = _filbuf(stdin);
    //И вернуть то, что вернула _filbuf
    return ret;
}
Abstraction вне форума Ответить с цитированием
Старый 26.10.2011, 23:48   #3
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

Ы спасибо. Мну как раз : и ? сбило с толку. никогда ими не пользовался и забыл Ггг. код понятен хи-хи, ступил
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 27.10.2011, 11:18   #4
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от pufystyj Посмотреть сообщение
Лично я не могу пользоватся тем, что не понимаю.
Плохо, очень. Используйте принцип черного ящика.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребята кто знает как пишется бат файл! OlegStalker Помощь студентам 1 25.05.2011 23:03
getchar prototype321 Помощь студентам 0 28.04.2010 15:06
число пишется как текст Screame Microsoft Office Excel 5 21.10.2009 20:13
Как полностью пишется lnsrsSeries1 в Delphi Танюха Ю Помощь студентам 4 09.10.2009 10:09
Как пишется программа на Ассемблере? ThePowerOfTheMind Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 26.05.2009 19:45