在C语言中,getchar()
函数用于从标准输入(通常是键盘)读取一个字符。如果你发现使用getchar()
读取的字符没有被写入文件,可能是以下几个原因:
"w"
或"a"
模式,而不是"r"
(只读)模式。FILE *file = fopen("filename.txt", "w"); // 打开文件用于写入
if (file == NULL) {
perror("Error opening file");
return 1;
}
fputc()
或fprintf()
等函数将字符写入文件。int c;
while ((c = getchar()) != EOF) {
fputc(c, file); // 将字符写入文件
}
fflush()
函数刷新输出缓冲区,或者在使用完文件后调用fclose()
函数关闭文件。fflush(file); // 刷新输出缓冲区
fclose(file); // 关闭文件
getchar()
函数在遇到文件结束符(EOF)时停止读取。确保你的输入没有提前结束。int c;
while ((c = getchar()) != EOF) {
fputc(c, file);
}
fopen()
和fputc()
等函数的返回值。if (fputc(c, file) == EOF) {
perror("Error writing to file");
}
以下是一个完整的示例代码,演示如何从标准输入读取字符并写入文件:
#include <stdio.h>
int main() {
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
int c;
while ((c = getchar()) != EOF) {
if (fputc(c, file) == EOF) {
perror("Error writing to file");
fclose(file);
return 1;
}
}
fflush(file);
fclose(file);
return 0;
}
通过以上步骤和示例代码,你应该能够解决getchar()
读取的字符未写入文件的问题。
领取专属 10元无门槛券
手把手带您无忧上云