C 功能“;fread“;导致分割错误
我在C 功能“;fread“;导致分割错误,c,sizeof,fread,C,Sizeof,Fread,我在fread上得到一个segmerror;这是非常基本的,但我无法找到答案 #include <stdio.h> #include <stdlib.h> void main () { int i; FILE *fp; char *re; fp = fopen("/net2/192.168.42.151/stud3/2013/dobo1298/data.txt","r"); i = sizeof(char); printf
fread
上得到一个segmerror;这是非常基本的,但我无法找到答案
#include <stdio.h>
#include <stdlib.h>
void main ()
{
int i;
FILE *fp;
char *re;
fp = fopen("/net2/192.168.42.151/stud3/2013/dobo1298/data.txt","r");
i = sizeof(char);
printf("%d",i);
re = calloc(10,i);
fread(re,i,1,fp);
printf("%s",*re);
}
#包括
#包括
空干管()
{
int i;
文件*fp;
char*re;
fp=fopen(“/net2/192.168.42.151/stud3/2013/dobo1298/data.txt”,“r”);
i=sizeof(char);
printf(“%d”,i);
re=calloc(10,i);
fread(re,i,1,fp);
printf(“%s”,*re);
}
fread没有问题。问题在于printf
说明符
printf("%s",*re);
^Expects string.
但是您正在传递char
(*re
)。如果要使用%s
说明符,则将re
作为参数传递给printf
不检查先前对fopen
的调用是否成功<如果您向其传递NULL
文件指针,则code>fread
可能会出错。一旦您解决了这个问题,您还需要空终止re
并更改printf
参数以停止取消引用re
内存已分配给re
(请参阅问题中的calloc
行)。如果要将其视为字符串,则需要终止fread
@simonc;哦错过了。