Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 功能“;fread“;导致分割错误_C_Sizeof_Fread - Fatal编程技术网

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;哦错过了。