fscanf无缘无故地停止读取文件

时间:2015-03-02 21:06:39

标签: c scanf

我正在编写一个小程序,用于读取格式如下的文件:

2 2
1.0 2.0
5.0 5.1
6.5 3.1
5.1 2.3
3 1
4 1 2 3 5 2
1 4 5 2 6 5
1 4 5 2 3 6

我使用fscanf读取前两个整数并分配一个数组来存储后面的所有四个浮点数。它工作正常。但是当"光标"到达包含整数" 3 1"的行,它因任何原因停止工作......

float *c = NULL;
float **coord = NULL;
f = fopen("mesh.dat", "r");
if( f != NULL ){
    /* the first two integers */
    fscanf(f, "%d %d", &n1, &n2);
    n = n1*n2;
    c = malloc(2*n*sizeof(float));
    coord = malloc(2*sizeof(float *));
    for(i=0; i<2; i++){ coord[i] = &c[i*n1]; }

    /* reading all coordinates */
    for(i=0; i<n; i++){ fscanf(f, "%f %f", &coord[0][i], &coord[1][i]); }

    /* reading the two integers */
    fscanf(f, "%d %d", &n, &t);
    printf("n = %d, t = %d\n", n, t);
}
fclose(f);

程序在这里停止。因为它没有读取整数&#34; 3 1&#34;。

任何想法?我试图理解我的头发......

1 个答案:

答案 0 :(得分:0)

这一行:

fscanf(f, "%d %d", &n1, n2);

应该是

fscanf(f, "%d %d", &n1, &n2);