C++ 读取长的非分隔整数,将它们分开并放入二维数组中

标签 c++ c text scanf

我有一个 numbers.txt,其中 m 行包含 n 位整数:

185793290584395734589340920932
432904895929583224024902234023

我尝试过使用fscanf(),但在定义格式时遇到问题(更多信息 here )。

    FILE *fid;
fid = fopen("numbers.txt", "r");
int numbers[m][n];
for (int i = 0; i < m; i++){
    for (int j = 0; j < n; j++){
        int num;
        fscanf(fid,format,&num);
        numbers[i][j] = num;
    }
}

用户过去提出的类似问题似乎涉及分隔数据,而我的则不是。

我希望能够获得以下形式的二维数组: 数字=

1 8 5 7 9 3 2 9 0 5 8 4 3 9 5 7 3 4 5 8 9 3 4 0 9 2 0 9 3 2
4 3 2 9 0 4 8 9 5 9 2 9 5 8 3 2 2 4 0 2 4 9 0 2 2 3 4 0 2 3

最佳答案

使用fgetc

FILE *fid = fopen("numbers.txt", "r");
int numbers[m][n];
for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
        numbers[i][j] = fgetc(fid) - '0';
    }
    fgetc(fid); // throw away new line
}

或使用fscanf

FILE *fid = fopen("numbers.txt", "r");
int numbers[m][n];
for (int i = 0; i < m; i++) {
    char c[n + 1];  //an extra char for '\0'
    fscanf(fid, "%s", c);
    for (int j = 0; j < n; j++) {
        numbers[i][j] = c[j] - '0';
    }
}

关于C++ 读取长的非分隔整数,将它们分开并放入二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21670116/

相关文章:

c - SQLite:构建 FTS5 可加载扩展时遇到问题

c - 为什么 C 编译器允许从 uint16_t 静默转换为枚举类型?

css - 如何在 Bootstrap3 中将文本置于响应图像旁边

c++ - 在 Visual C++ 中通过 TCP 发送字符串数据

c++ - 有没有办法根据用户参数设置函数指针?

c++ - Gamma 校正看起来没有正确校正,这是线性的吗?

c++ - 使用 Doxygen + Graphviz 可视化一个巨大的 C++ 项目

c - 文件系统 I/O 缓冲区

text - 将数据和文本导出,追加/追加到文件中(Mathematica)

Java Android : Make a word (from a paragraph) into a button