所以我正在用 C 编写一个并行数独解决方案检查器,但我似乎遇到了读取普通旧 .txt 文件的问题。
这是要在文件中读取的代码:
FILE* fp = fopen(argv[1], "r");
if (fp == NULL) {
printf("Cannot open file\n");
return 1;
}
//Begin copying file using fgetc
int c;
while ((c = fgetc(fp)) != EOF) {
for (int i = 0; i < PUZZLE_SIZE; ++i) {
for (int j = 0; j < PUZZLE_SIZE; ++j) {
if (c != -38) { //-38 is newline
//puzzle is a global array of ints
puzzle[i][j] = c - 48; //handles ASCII to int (1-9) conversion
}
}
}
}
fclose(fp);
.txt 文件如下:
534678912
672195348
198342567
859761423
426853791
713924856
961537284
287419635
345286179
当我打印 c - 48 时,我得到了预期值;当我在循环内打印拼图[i][j] 时,我再次得到正常值。但是,当我之后查看我的拼图数组时,每个值都设置为 9;对于我的一生,我无法弄清楚为什么。是否存在我不知道的内存/范围问题?