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

如何在C/C++中批量输入大量整数?求文件读取实现方法

从外部文件读取整数到数组的两种实用实现方式

没问题,我来帮你搞定批量读取1000个整数的需求!下面给你两种灵活的实现方法,你可以根据自己的场景选择:

方法一:修改代码直接读取文件(灵活可控)

这种方式适合你希望程序主动读取指定文件的场景,步骤清晰易扩展:

  1. 准备输入文件
    创建一个文本文件(比如命名为input.txt),内容格式和你手动输入的逻辑一致:

    • 第一行写元素个数1000
    • 接下来的内容是1000个整数,可以用空格、换行或者制表符分隔(scanf/fscanf会自动跳过空白字符,格式不用太严格)
  2. 替换原输入代码
    把你原来手动输入的部分,改成从文件读取的逻辑:

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX 1000 // 务必确保数组大小能容纳1000个元素
    
    int main() {
        int arr[MAX];
        int num, i;
    
        // 以只读模式打开输入文件
        FILE *fp = fopen("input.txt", "r");
        if (fp == NULL) {
            perror("打开文件失败"); // 打印具体错误原因,比如文件不存在
            return EXIT_FAILURE;
        }
    
        // 读取元素个数(对应原代码中输入num的步骤)
        if (fscanf(fp, "%d", &num) != 1) {
            printf("读取元素个数出错\n");
            fclose(fp);
            return EXIT_FAILURE;
        }
    
        // 防呆:确保元素个数不超过数组最大容量
        if (num > MAX) {
            printf("元素个数超过数组最大限制%d\n", MAX);
            fclose(fp);
            return EXIT_FAILURE;
        }
    
        // 批量读取整数到数组
        printf("正在读取%d个元素...\n", num);
        for (i = 0; i < num; i++) {
            if (fscanf(fp, "%d", &arr[i]) != 1) {
                printf("读取第%d个元素失败\n", i+1);
                fclose(fp);
                return EXIT_FAILURE;
            }
        }
    
        // 读取完成后必须关闭文件,释放系统资源
        fclose(fp);
    
        // 这里可以添加你后续处理数组的代码
        // ...
    
        return EXIT_SUCCESS;
    }
    
  3. 关键代码说明

    • fopen("input.txt", "r"):返回文件指针,若文件不存在/权限不足则返回NULL
    • fscanf(fp, "%d", &var):用法和scanf几乎一致,只是指定了读取来源的文件指针
    • 错误处理:添加了多环节的异常判断,避免程序崩溃或读取错误数据

方法二:命令行输入重定向(无需修改代码)

如果你不想改动现有代码,用命令行重定向就能快速实现从文件读取输入,步骤超简单:

  1. 准备输入文件
    和方法一的文件格式完全相同:第一行是1000,后面跟着1000个整数。

  2. 编译并运行程序
    先把你的原代码编译成可执行文件(比如叫my_program),然后在命令行执行:

    ./my_program < input.txt
    

    这样程序中所有的scanf都会自动从input.txt读取数据,完全替代键盘输入。


注意事项

  • 务必保证arr数组的大小足够(至少1000),否则会出现数组越界,导致程序崩溃或数据损坏
  • 输入文件中的内容尽量只包含整数,避免混入非数字字符,否则会导致读取失败
  • 如果你的程序不需要提前知道元素个数,也可以直接循环1000次读取,跳过读取num的步骤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:02:55