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;
}