首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么(虽然..getchar())不写入我的文件,在C中?

在C语言中,getchar()函数用于从标准输入(通常是键盘)读取一个字符。如果你发现使用getchar()读取的字符没有被写入文件,可能是以下几个原因:

  1. 文件打开模式不正确:确保你在写文件时使用了正确的模式。例如,如果你想要写入文件,应该使用"w""a"模式,而不是"r"(只读)模式。
代码语言:txt
复制
FILE *file = fopen("filename.txt", "w"); // 打开文件用于写入
if (file == NULL) {
    perror("Error opening file");
    return 1;
}
  1. 未将字符写入文件:在读取字符后,你需要使用fputc()fprintf()等函数将字符写入文件。
代码语言:txt
复制
int c;
while ((c = getchar()) != EOF) {
    fputc(c, file); // 将字符写入文件
}
  1. 未刷新或关闭文件:在写入文件后,确保调用fflush()函数刷新输出缓冲区,或者在使用完文件后调用fclose()函数关闭文件。
代码语言:txt
复制
fflush(file); // 刷新输出缓冲区
fclose(file); // 关闭文件
  1. 输入结束条件getchar()函数在遇到文件结束符(EOF)时停止读取。确保你的输入没有提前结束。
代码语言:txt
复制
int c;
while ((c = getchar()) != EOF) {
    fputc(c, file);
}
  1. 错误处理:检查文件操作是否成功,例如fopen()fputc()等函数的返回值。
代码语言:txt
复制
if (fputc(c, file) == EOF) {
    perror("Error writing to file");
}

示例代码

以下是一个完整的示例代码,演示如何从标准输入读取字符并写入文件:

代码语言:txt
复制
#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()读取的字符未写入文件的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

11分2秒

变量的大小为何很重要?

6分24秒

手搓操作系统踩坑之宏没有加括号-来自为某同学支持和答疑的总结

1分34秒

手把手教你利用Python轻松拆分Excel为多个CSV文件

26分40秒

晓兵技术杂谈2-intel_daos用户态文件系统io路径_dfuse_io全路径_io栈_c语言

3.4K
1分7秒

贴片式TF卡/贴片式SD卡如何在N32G4FR上移植FATFS,让SD NAND flash读写如飞

3分23秒

《中国数据库前世今生:回顾与展望》

2.1K
5分33秒

JSP 在线学习系统myeclipse开发mysql数据库web结构java编程

领券