编辑:对不起我缺乏睡眠并且看不到正确的东西,我感到抱歉。
谢谢大家

我不知道为什么或如何,但是我仔细检查了代码,然后崩溃了,这是生成de crash的代码示例,但我不明白。
我曾就此事经历过其他问题,但尝试人们给出的解决方案仍然没有效果。我尝试阅读的txt格式如下:


  0 0 -1.000047e + 000
  
  0 1 -1.000047e + 000
  
  0 2 -1.000047e + 000
  
  0 3 -1.000047e + 000
  
  0 4 -1.000047e + 000
  
  0 5 -1.000047e + 000
  
  1 0 -1.000047e + 000
  
  1 1 -1.000047e + 000


并且提取失败的代码,我没有任何时间/如果/任何考虑到达文件末尾或类似的东西,因为我总是知道有多少个.txt必须读取(它已创建)通过我以前编写的程序,顺便说一下,我对C还是比较陌生的:

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

const int   Nx=88;          // lattice size X
const int   Ny=44;          // lattice size Y

double *phi;



int main() {
int i, j, ki, kj, index;
FILE * conf;
FILE * fp;

fp = fopen ("test.txt","w+");
conf = fopen ("InitConditions.txt", "r");  /* open the file for reading */

ki=0;
kj=0;

for (i=0; i<Nx; i++){

    for (j=0; j<Ny; j++){

        index=get_index(i,j);
        printf("%i",index);
        fscanf(conf,"%i %i %lf", &ki, &kj,  &phi[index]);
    }

}

return (0);
}

int get_index(int i, int j){

int index;

index=i*Ny+j;

return index;
}


错误是这样的


  进程终止,状态为-1073741819(0分钟,7秒)


我不明白

最佳答案

fscanf(),将崩溃,因为您在那里使用&phi[index],但是phi并不指向您已分配的内存。

您需要首先分配所需的内存。

if((phi = malloc(Nx * Ny * sizeof(double))) == NULL) { /* Allocate memory */
    /* Error handling code */
    exit(1);
}
/* ... */
/* ... */

for (i=0; i<Nx; i++) {
    for (j=0; j<Ny; j++) {
        index=get_index(i,j);
        printf("%i",index);
        if (fscanf(conf,"%i %i %lf", &ki, &kj,  &phi[index]) != 3) {
            /* Code to handle fscanf failure */
        }
    }
}

/* .... */
/* .... */
free(phi);  /* Free the allocated memory when it is not needed anymore */

09-10 19:40