我有 numbers.txt , m 行包含 n -digit整数:
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
答案 0 :(得分:1)
使用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';
}
}
答案 1 :(得分:0)
您是否在阵列的每个索引中存储每个数字?如果是,您可以使用“%c”,然后用“0”减去它。
答案 2 :(得分:0)
试试这个,
fscanf(fid, "%1d", &num);