C++ C++;读取长的非分隔整数,将它们分隔并放入2d数组

C++ C++;读取长的非分隔整数,将它们分隔并放入2d数组,c++,c,text,scanf,C++,C,Text,Scanf,我有一个numbers.txt,其中的m行包含n位整数: 185793290584395734589340920932 432904895929583224024902234023 我曾尝试使用fscanf(),但在定义格式时遇到问题(更多信息) 您是否在数组的每个索引中存储每个数字?如果是,您可以使用“%c”,然后用“0”减去它。用fgetc FILE *fid = fopen("numbers.txt", "r"); int numbers[m][n]; for (int i = 0; i

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

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


您是否在数组的每个索引中存储每个数字?如果是,您可以使用“%c”,然后用“0”减去它。

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(fid, "%1d", &num);

@Duck我想他不想打印出来。我认为A.L.想存储2D数组并计算它。这是C还是C++?两种语言都有解决此问题的特定方法。-“0”的作用是什么?@A.L,您正在阅读一个
char
。字符
'0'
48
,字符
'A'
65
,等等。减去
'0'
将字符
'0'
48
)转换为整数值
0
,字符
'1'
49
)转换为整数值
1
,等等。
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
}
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';
    }
}
fscanf(fid, "%1d", &num);