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

C语言实现从指定txt文件读取所有数字并输出到新文件的问题求助

C语言读取TXT文件数字并写入新文件实现方案

常见出错原因排查

你遇到的输出结果和原文件数字不一致的问题,90%以上属于以下三类错误:

  • 直接用%d格式符读取混合内容的文件:%d遇到非数字字符会直接终止读取,导致后续数字漏读
  • 字符与整数转换错误:直接将字符型的'0'~'9'按整数输出,得到的是ASCII码值(如'0'输出为48而非0)
  • 未做文件打开成功校验:空指针操作导致读取写入逻辑异常

实现代码

场景1:提取所有数字字符原样输出(如原文件a1b23c输出为123)

#include <stdio.h>
#include <ctype.h>

int main() {
    FILE *finp = fopen("你的原文件路径.txt", "r");
    FILE *fout = fopen("输出文件路径.txt", "w");
    if (finp == NULL || fout == NULL) {
        perror("文件打开失败");
        return 1;
    }

    int ch;
    while ((ch = fgetc(finp)) != EOF) {
        if (isdigit(ch)) {
            fputc(ch, fout);
            // 若需要数字间加空格分隔,新增一行:fputc(' ', fout);
        }
    }

    fclose(finp);
    fclose(fout);
    return 0;
}

场景2:读取连续多位数为完整整数输出(如原文件a1b23c输出为1 23)

#include <stdio.h>

int main() {
    FILE *finp = fopen("你的原文件路径.txt", "r");
    FILE *fout = fopen("输出文件路径.txt", "w");
    if (finp == NULL || fout == NULL) {
        perror("文件打开失败");
        return 1;
    }

    int num;
    // %*[^0-9] 表示跳过所有非数字字符,再读取整数
    while (fscanf(finp, "%*[^0-9]%d", &num) == 1) {
        fprintf(fout, "%d\n", num);
        // 若需要用空格分隔而非换行,修改为:fprintf(fout, "%d ", num);
    }

    fclose(finp);
    fclose(fout);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:04