1、getchar()
和 fgetc()
getchar()
和 fgetc()
都用于从输入中读取单个字符。getchar()
从标准输入 (stdin
) 读取字符。fgetc()
从指定的文件流中读取字符。返回值是 int
,而不是 char
。
#include <stdio.h> int main() { int c; // 使用 int 正确处理 EOF while ((c = getchar()) != EOF) { // 与 EOF 比较 putchar(c); // 输出字符 } return 0; }
2、putchar()
和 fputc()
putchar()
和 fputc()
用于输出单个字符。putchar()
输出到标准输出 (stdout
)。fputc()
输出到指定的文件流。与 getchar()
和 fgetc()
不同,这些函数接受 int
类型 的输入参数。
为了与 getchar()
和 fgetc()
保持一致,这些函数的参数类型定义为 int
。这使得输入和输出操作可以无缝配合。在 C 中,当 char
类型的参数传递给函数时,会自动提升为 int
,因此无需显式转换。
#include <stdio.h> int main() { int c = 'A'; // 使用 int 确保兼容性 putchar(c); // 输出 'A' return 0; }
3、读取字符时使用 int
始终将 getchar()
或 fgetc()
的返回值存储在 int
类型的变量中,以正确处理 EOF
。
#include <stdio.h> int main() { int c; printf("请输入字符,按 Ctrl+D(Linux/Unix/Mac)或 Ctrl+Z(Windows) 结束输入:\n"); // 使用 getchar() 读取输入,并在 EOF 前使用 putchar() 输出 while ((c = getchar()) != EOF) { putchar(c); // 将读取到的字符打印到屏幕 } printf("\n输入结束。\n"); return 0; }
4、必要时进行类型转换
如果需要将读取到的字符存储为 char
类型,可以在确保安全的情况下进行显式转换。
#include <stdio.h> int main() { int c; // 使用 int 而不是 char 以正确处理 EOF printf("请输入字符,按 Ctrl+D (Linux/Mac) 或 Ctrl+Z (Windows) 结束输入:\n"); // 从标准输入逐字符读取,直到遇到 EOF while ((c = getchar()) != EOF) { char ch = (char)c; // 将 int 安全转换为 char putchar(ch); // 将字符输出到标准输出 } printf("\n读取结束。\n"); return 0; }