fscanf()导致分段错误

fscanf()导致分段错误,c,segmentation-fault,scanf,C,Segmentation Fault,Scanf,我正在用C编写一些代码来读取数组中的一些文件数据,并在使用gcc编译时不断遇到分段错误。它读取文件直到第11行数据,然后给出故障。我在这里遇到了一些类似的问题,但没有找到解决办法。 谢谢 代码: 让我们考虑这个代码: name=(char**)malloc(N*sizeof(char)); for(k=0;k<N;k++) { name[k]=(char*)malloc(5*sizeof(char)); } name=(char**)malloc(N*sizeof(char));

我正在用C编写一些代码来读取数组中的一些文件数据,并在使用gcc编译时不断遇到分段错误。它读取文件直到第11行数据,然后给出故障。我在这里遇到了一些类似的问题,但没有找到解决办法。 谢谢

代码:


让我们考虑这个代码:

name=(char**)malloc(N*sizeof(char));
for(k=0;k<N;k++)
{
    name[k]=(char*)malloc(5*sizeof(char));
}
name=(char**)malloc(N*sizeof(char));

对于(k=0;k而不是对类型进行硬编码,并使其在
name
中出错,让编译器来解决。代码越少,越容易阅读,越容易编码和维护

//bfac=(double*)malloc(N*sizeof(double));
//resnum=(int*)malloc(N*sizeof(int));
//name=(char**)malloc(N*sizeof(char));  OP was looking for `sizeof (char*)`

bfac   = malloc(N * sizeof *bfac);
resnum = malloc(N * sizeof *resnum);
name   = malloc(N * sizeof *name);

同样在C中,不需要强制转换
malloc()

的结果,那么,文件的第11行是什么样子的?它有一行吗?另外,您应该真正检查
fscanf()的返回
以确保它成功读取所有字段。第11行是:ATOM 11 CA VAL A 11 4.835 4.291 0.185 1.00 38.80必须进行检查并按预期返回12,直到它给出错误端注释:。
name=(char**)malloc(N*sizeof(char));
for(k=0;k<N;k++)
{
    name[k]=(char*)malloc(5*sizeof(char));
}
//bfac=(double*)malloc(N*sizeof(double));
//resnum=(int*)malloc(N*sizeof(int));
//name=(char**)malloc(N*sizeof(char));  OP was looking for `sizeof (char*)`

bfac   = malloc(N * sizeof *bfac);
resnum = malloc(N * sizeof *resnum);
name   = malloc(N * sizeof *name);