以下是
test.csv
的内容,
95,47
460,215
我编写了这个 C 程序来将其读入一个 long long 数组。
#include <stdio.h>
#define DIM 2
void read(char path[], long long (*B)[DIM]);
int main(int argc, char *argv[]) {
long long B[DIM][DIM];
read("test.csv", B);
for (int i = 0; i < 2; i++)
for (int j = 0; j < DIM; j++)
printf("%lld\n", B[i][j]);
return 0;
}
void read(char path[], long long (*B)[DIM]) {
int i, j;
int c, sign = 1;
long long number = 0;
FILE *fp = fopen(path, "r");
if (fp) {
while ((c = getc(fp)))
if (c == '-') {
sign = -1;
} else if (c == ',') {
B[i][j++] = sign * number;
sign = 1;
number = 0;
} else if (c == '\n') {
B[i++][j] = sign * number;
j = 0;
sign = 1;
number = 0;
} else if (c == EOF) {
B[i][j] = sign * number;
break;
} else if ('0' >= c || c <= '9') {
number = (number * 10) + (c - '0');
}
fclose(fp);
} else {
printf("File %s not found.\n", path);
}
}
我的 C 有点生锈,这给我带来了分段错误。我不明白为什么?有趣的是,如果我在 main 中注释 2D 循环,那么程序运行正常。
在使用变量之前始终初始化它们:
void read(char path[], long long (*B)[DIM]) {
int i = 0, j = 0; // i and j should be initialized to zero
// ...
}