C,从文件读入数组,按编号读取

时间:2018-01-11 12:25:12

标签: c arrays scanf

void readfromFile() {

    FILE *myFile;
    myFile = fopen("matrikel.txt", "r");

    //read file into array
    int numberArray[12];
    int i;

    if (myFile == NULL) {
        printf("Error Reading File\n");
        exit (0);
    }

    for (i = 0; i < 12; i++) {
        fscanf(myFile, "%d,", &numberArray[i] );
    }

    for (i = 0; i < 1; i++) {
        printf("Number is: %d\n\n", numberArray[i]);
    }

    fclose(myFile);
}

&#34; matrikel.txt&#34;包含

808098822790 

int numberArray[12]的数字似乎太长,在运行代码时会输出一个随机数。 当从它所使用的数字的末尾剪切一些单个整数时,最大长度似乎是9。

我不太确定,但是第一个for循环中的fscanf不应该在numberArray[]的每个单元格中打印一个位数?

1 个答案:

答案 0 :(得分:5)

scanf的格式说明符遵循以下原型:%[*][width][length]specifier 因此,使用%1d,您每次都会读取一个数字。 但是使用fgetc(myFile);

将每个数字作为字符读取会更简单
 for (i = 0; i < 12; i++) {
     int c = fgetc(myFile);
     if(c == EOF)
        break;
     numberArray[i] = c - '0';
 }