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

nb9*_*b99 2 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);
}
Run Code Online (Sandbox Code Playgroud)

"matrikel.txt"包含

808098822790 
Run Code Online (Sandbox Code Playgroud)

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

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

Luc*_*tti 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';
 }
Run Code Online (Sandbox Code Playgroud)