fread会删除其他先前分配的字符串

时间:2019-05-09 17:56:39

标签: c

我正在使用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”。

1 个答案:

答案 0 :(得分:1)

&array中的fread(&array,8,npts,fo);是错误的;那是指针的地址。您应该传递指针:fread(array,8,npts,fo);