2015-03-02 34 views
-1

我写了一个小程序,用于读取格式像这样的文件:的fscanf停止读取文件,而无需任何理由

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); 

程序停止在这里。因为它不读取整数“3 1”。

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

+0

是有原因的,你滥用它。此外,您发布的代码不允许解释发生了什么问题。你究竟是什么意思'停止阅读......? – 2015-03-02 21:07:40

+0

好的,谢谢,我会尝试用更多的代码来解释问题 – user3615636 2015-03-02 21:29:14

+1

您将值读入n1和n2,然后将n乘以2.请发布一个工作程序而不是形成不良的碎片,以避免浪费愿意帮帮我。 – 2015-03-02 21:55:43

回答

0

这条线:

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

应该

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

对不起,这是我在这里复制/粘贴代码时发生的错误。在我的程序中没关系。但是,无论如何感谢:) – user3615636 2015-03-02 21:44:54