Везде, где я вижу "это практически идентично", или что-то подобное...
Из Учебник по программированию GNU C:
В библиотеке GNU C есть еще одна функция, называемая fgetc. Он идентичен getc в большинстве случаев, за исключением того, что getc обычно реализуется как макрофункция и сильно оптимизирован, поэтому предпочтительнее в большинстве ситуаций. (В ситуациях, когда вы читаете со стандартного ввода, getc примерно так же быстро, как fgetc, поскольку люди печатают медленно по сравнению с тем, как быстрые компьютеры могут читать свои данные, но когда вы читаете из потока, который не интерактивно создается человеком, fgetc, вероятно, лучше.)
Каковы другие отличия? Я слышал, что у каждой из них есть другая реализация (и ее можно использовать как макрос), но что делает их soo разными (или достаточно разными) для них как в стандартной библиотеке C (или спецификации)?