getc vs fgetc, rasmon, 04-Авг-08, 18:50 [смотреть все]Подскажите разницу между функциями Си: getc и fgetc . Вот цитата из Кенигана и Ритчи: getc делает тоже, что и fgetc, но в отличие от последней, если она - макрос, поток может браться более одного раза.Я не понимаю фразы "поток может браться более одного раза". Это почему я не могу "взять поток" больше одного раза? Что имеется ввиду? Такой же вопрос можно задать относительно функций putc и fputc.
|
- 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 делает тоже, что и fgetc, но в отличие от последней, если >>она - макрос, поток может браться более одного раза. > >Следует читать не "поток может браться...", а "параметр stream может вычисляться...". Т.е. >getc может быть макросом, и если ты в качестве параметра ей >укажешь выражение, то это выражение может быть выполнено заранее неизвестное количество >раз. >Например, неизвестно чему будет равна переменная stream после "вызова" getc(stream++). То есть, имеются ввиду всего лишь навсего так называемые "побочные эффекты" использования макросов? Также, получается, что, если "не уверен", то используй fgets? )
|