fgetc(getc) 、getchar

fgetcgetchargetc 都是用于读取字符的函数,但它们在使用场景和实现上有一些不同。以下是它们的关系与区别:

1. fgetc

  • 原型int fgetc(FILE *stream);

  • 参数:接收一个 FILE 指针,表示要读取的文件流。

  • 用途:从指定的文件流中读取一个字符。

  • 返回值:成功时返回读取的字符,失败时返回 EOF

  • 使用场景:适合在处理文件时使用。

2. getchar

  • 原型int getchar(void);

  • 参数:无参数,从标准输入读取字符(通常是键盘)。

  • 用途:从标准输入流(stdin)读取一个字符。

  • 返回值:成功时返回读取的字符,失败时返回 EOF

  • 使用场景:适合用于简单的控制台输入。

3. getc

  • 原型int getc(FILE *stream);

  • 参数:接收一个 FILE 指针,表示要读取的文件流。

  • 用途:从指定的文件流中读取一个字符,与 fgetc 功能相似。

  • 返回值:成功时返回读取的字符,失败时返回 EOF

  • 性能getc 有时可能比 fgetc 更快,因为它可以在某些实现中是宏,减少函数调用开销。

  • 使用场景:适合在处理文件时使用。

关系与区别总结

  • 功能fgetcgetc 的功能相似,都是从文件流中读取字符;getchar 则是专门用于从标准输入读取字符。

  • 输入源fgetcgetc 需要指定文件流,而 getchar 直接读取标准输入。

  • 性能:在某些实现中,getc 可以比 fgetc 更快,但它们的功能和行为基本相同。

  • 适用性:在需要处理文件时使用 fgetcgetc,在处理标准输入时使用 getchar

小结:

1、fgetc、getc 操作文件流

2、getchar 操作是标准流

Last updated