Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fscanf无理由停止读取文件_C_Scanf - Fatal编程技术网

fscanf无理由停止读取文件

fscanf无理由停止读取文件,c,scanf,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 !

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

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);
float*c=NULL;
浮动**坐标=空;
f=fopen(“网格数据”,“r”);
如果(f!=NULL){
/*前两个整数*/
fscanf(f、%d%d、&n1和n2);
n=n1*n2;
c=malloc(2*n*sizeof(float));
坐标=malloc(2*sizeof(float*);
对于(i=0;i这条线:

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

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

这是有原因的,你误用了它。而且你发布的代码不允许解释什么是错误的。你的确切意思是
停止阅读
。?好的,谢谢,我会尝试用更多的代码来解释问题。你将值读入n1和n2,然后将n乘以2。请发布一个工作程序,而不是格式不正确的片段,以避免浪费时间是的,我更新了我写的代码。事实上,n=n1*n2。很抱歉错过了。需要发布
c
的声明,否则
&c[I*n1]
是可疑的。很抱歉,我在这里复制/粘贴代码时出错了。在我的程序中,这没问题。但无论如何,谢谢:)