2015-03-02 61 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