You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C++编译器编写C代码:教材文件写入示例无法写入文件

解决C语言文件写入后无内容的问题

从你贴的代码片段来看,大概率是几个常见的小疏漏导致的,我帮你逐一排查:

1. 缺少写入文件的核心逻辑

你贴的代码只到了提示输入的部分,但完全没看到把输入的account、name、balance写入文件的代码!比如你需要用fprintf(格式化写入)或者fwrite把数据写到cfPtr指向的文件里,举个例子:

// 先通过scanf获取用户输入,再执行写入
scanf("%d %s %lf", &account, name, &balance);
fprintf(cfPtr, "%d %s %.2lf\n", account, name, balance);

如果没这一步,程序只会帮你创建空文件(因为用了"w"模式),但不会写入任何内容。

2. 没有关闭文件流

C语言里,用fopen打开的文件必须用fclose手动关闭!尤其是写入操作,系统会先把数据暂存在内存缓冲区里,只有关闭文件或者手动调用fflush时,才会把缓冲区的内容真正同步到磁盘。所以在else块的末尾一定要加:

fclose(cfPtr);

如果程序直接退出没关文件,缓冲区的数据很可能不会被写入磁盘,最终文件就是空的。

3. 输入格式不匹配(隐性坑)

如果你的scanf输入格式和提示的要求不一致,比如输入时没按「账号 姓名 余额」的顺序/格式输入,会导致数据没被正确读取,自然也写不进文件。比如要确保输入是类似100 John 450.50这样的格式。

给你补全后的完整可运行示例代码参考:

#include <stdio.h>

int main(void) {
    int account;
    char name[30];
    double balance;
    FILE *cfPtr;

    if ((cfPtr = fopen("clients.txt", "w")) == NULL) {
        printf("File could not be opened\n");
    } else {
        printf("Enter the account, name, and balance.\n");
        printf("Enter EOF to end input (Ctrl+D on Linux/macOS, Ctrl+Z on Windows):\n");
        
        // 循环读取输入直到用户触发EOF
        while (scanf("%d %s %lf", &account, name, &balance) != EOF) {
            fprintf(cfPtr, "%d %s %.2lf\n", account, name, balance);
        }

        // 必须关闭文件,确保缓冲区数据写入磁盘
        fclose(cfPtr);
    }
    return 0;
}

你可以对照自己的代码,看看是不是漏了这些关键步骤,应该就能解决文件为空的问题了。

内容的提问来源于stack exchange,提问作者DudeBro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:50:05