The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"getc vs fgetc"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"getc vs fgetc"  
Сообщение от rasmon email on 04-Авг-08, 18:50 
Подскажите разницу между функциями Си: getc и fgetc .
Вот цитата из Кенигана  и Ритчи:
getc делает тоже, что и fgetc, но в отличие от последней, если она - макрос, поток может браться более одного раза.

Я не понимаю фразы "поток может браться более одного раза".
Это почему я не могу "взять поток" больше одного раза? Что имеется ввиду?
Такой же вопрос можно задать относительно функций  putc и fputc.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

  • getc vs fgetc, Michelnok, 19:22 , 04-Авг-08, (1)  
    • getc vs fgetc, anonymous, 22:34 , 04-Авг-08, (2)  
    • getc vs fgetc, rasmon, 17:25 , 06-Авг-08, (3)  
      • getc vs fgetc, Michelnok, 19:30 , 06-Авг-08, (4)  

Сообщения по теме [Сортировка по времени | RSS]


1. "getc vs fgetc"  
Сообщение от Michelnok (??) on 04-Авг-08, 19:22 
>getc делает тоже, что и fgetc, но в отличие от последней, если
>она - макрос, поток может браться более одного раза.

Следует читать не "поток может браться...", а "параметр stream может вычисляться...". Т.е. getc может быть макросом, и если ты в качестве параметра ей укажешь выражение, то это выражение может быть выполнено заранее неизвестное количество раз.
Например, неизвестно чему будет равна переменная stream после "вызова" getc(stream++).

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "getc vs fgetc"  
Сообщение от anonymous (??) on 04-Авг-08, 22:34 
>Например, неизвестно чему будет равна переменная stream после "вызова" getc(stream++).

Лучше такой пример: есть функция get_stream() возвращающаяя поток.  Неизвестно, сколько раз она будет вызвана во время getc(get_stream())

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "getc vs fgetc"  
Сообщение от rasmon email on 06-Авг-08, 17:25 
>>getc делает тоже, что и fgetc, но в отличие от последней, если
>>она - макрос, поток может браться более одного раза.
>
>Следует читать не "поток может браться...", а "параметр stream может вычисляться...". Т.е.
>getc может быть макросом, и если ты в качестве параметра ей
>укажешь выражение, то это выражение может быть выполнено заранее неизвестное количество
>раз.
>Например, неизвестно чему будет равна переменная stream после "вызова" getc(stream++).

То есть, имеются ввиду всего лишь навсего так называемые "побочные эффекты" использования макросов?
Также, получается, что, если "не уверен", то используй fgets? )

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "getc vs fgetc"  
Сообщение от Michelnok (??) on 06-Авг-08, 19:30 
>
>То есть, имеются ввиду всего лишь навсего так называемые "побочные эффекты" использования
>макросов?

Да.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру