我正在使用fread读取二进制文件,但是在此操作过程中,另一个字符串更改为(null)。下面是似乎导致该问题的代码部分。整个代码更长,我的怀疑是我在可用的堆栈内存方面遇到了问题,但是我不知道如何验证。
char *foo;
foo = argv[1];
double *array;
array= malloc(npts*sizeof(double)); //npts - number of points
FILE *fo = fopen(ofile, "r");
printf("String: %s\n",foo);
fread(&array,8,npts,fo);
printf("String: %s\n",foo);
第一次出现print语句返回先前分配的值'bar',但是第二次返回'(null)'。
我希望两个打印语句都返回“ bar”。
答案 0 :(得分:1)
&array
中的fread(&array,8,npts,fo);
是错误的;那是指针的地址。您应该传递指针:fread(array,8,npts,fo);
。