2

我已经能够读取一个 txt 文件并将每个单独的 int 放入一个数组中,这是我最接近成功的地方。

int main(){
    int key[100];
    int ch;

    gp = fopen("C:\\file.txt","r");
 
    if (gp == NULL)
    {
        printf("Not printing");
        exit(0);
    }
 
    ch= fgetc(gp);
    while (ch != EOF) {
 
        if(isdigit(ch)) {
            key[i] = ch;
            i++;
        }
        ch = fgetc(gp);
    }
}

使用此代码,我能够从文件中读取每个单独的数字作为字符,并成功打印数组。问题是,我需要能够访问数组的值,并且它存储在字符的 ascii 值中。

为了解决这个问题,我尝试在将 ch 的值分配给数组之前从字符中减去 48,以尝试补偿。像这样:

while (ch != EOF) {

    if(isdigit(ch)) {
        key[i] = ch-48;
        i++;
    }
    ch = fgetc(gp);
}

或者让该循环运行并尝试另一个循环。

while (ch != EOF) {

    if(isdigit(ch)) {
        key[i] = ch;
        i++;
    }
    ch = fgetc(gp);
}
for(i=0;i<strlen(key);i++){
    key[i] = key[i]-48;
}

不用说,这些尝试也没有奏效。

我的最后一次尝试是尝试fscanf(gp, "%d", key);,尽管这似乎只适用于我的第一个整数。通过循环运行fscanf似乎也不起作用。

for (i=0; i <strlen(key); i++){
    fscanf(gp, "%d", key);
}

因此,我正在扫描的 .txt 文件如下所示:

4
1 2 3 4
5 6 7 8
9 8 8 7 
9 0 8 4
4

0 回答 0