C 读取表文件并将其存储在数组中时出现问题

C 读取表文件并将其存储在数组中时出现问题,c,segmentation-fault,scanf,C,Segmentation Fault,Scanf,我想读取并存储在一个数组a文件中,该文件包含n行和m列: 8.315287e-07 1.422122e-28 9.128814e-32 8.693229e-28 1.015631e-06 1.422121e-28 9.128802e-32 8.693270e-28 1.240495e-06 1.422119e-28 9.128784e-32 8.693241e-28 我编写了以下代码: FILE* file = N

我想读取并存储在一个数组
a
文件中,该文件包含
n
行和
m
列:

8.315287e-07     1.422122e-28    9.128814e-32    8.693229e-28    
1.015631e-06     1.422121e-28    9.128802e-32    8.693270e-28   
1.240495e-06     1.422119e-28    9.128784e-32    8.693241e-28   
我编写了以下代码:

FILE* file = NULL;
double intensity[46][7] = {{0}};
int score[2][3];
int kloop = 0;
double sum=0;
file = fopen("intensity", "r");
// if (file = NULL) printf("file = NULL");
for (kloop = 0 ;kloop < 47;kloop ++){
    if (fichier != NULL)
    {
        fscanf(file, "%d %d ...", &intensity[i][0],&intensity[i][1]...;
        printf("%e %e \n",intensity[i][0], intensity[i][1]...]);
    }
}
fclose(file);
然后,当我取消注释第7行时,我得到一个“分段错误”错误。 它正在处理一个包含整数的简单文件:

1   2   3

4   5   7 
知道问题出在哪里吗?

在:
if(file=NULL)
你应该把
if(file==NULL)


因为您想要比较的结果(相等),但是您正在将
NULL
值赋给变量。

fscanf(…,%d“,…)
->
fscanf(…,%lf“,…)
它确实在工作,非常感谢。为什么%d无效?我认为它包含一个地址,所以是一个整数。您应该检查
fscanf
中的返回值,查看它读入了多少值,以便处理错误/failures@ludmi指定要读入的类型,在本例中为
double
%lf
)。您总是将地址传递给
scanf
函数,因为C是按值传递的(否则无法修改)。格式说明符(
%s
%d
%f
%lf
等)必须与参数类型匹配(
char*
int*
float*
double*
,…)。请帮自己一个忙,让编译器警告您发现错误的情况。如果启用了编译器警告,编译器可能会告诉您。请始终启用编译器警告(
-Wall-Wextra-pedantic
表示gcc/clang;而
/W3
表示VS)在代码编译之前,不要接受代码,除非没有警告。(请参阅@Osiris的原始注释-使用不正确的转换说明符会导致读取失败,并可能导致未定义的行为)
1   2   3

4   5   7