[英]Issues reading in file with fgetc C
因此,我正在用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時,我得到了預期的值。 當我在循環內打印puzzle [i] [j]時,我又得到了正常值。 但是,當我隨后查看拼圖數組時,每個值都設置為9; 對於我的一生,我無法弄清楚原因。 有我不知道的內存/作用域問題嗎?
基本上,您的程序要做的是:對於文件中的每個字符( while
),將所有拼圖條目( for
, for
)設置為該字符。 結果,所有條目將包含文件的最后一個字符。
您想將for
循環放在外面,並為每個難題條目讀取一個字符:
for (int i = 0; i < PUZZLE_SIZE; ++i)
for (int j = 0; j < PUZZLE_SIZE; ++j) {
c = fgetc(fp);
if (c == '\n')
c = fgetc(fp); // get a new char if we hit a newline
puzzle[i][j] = c - `0`;
}
這是假定文件中有足夠的字符來填補難題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.