【发布时间】:2016-06-19 07:40:04
【问题描述】:
我想从文件流中读取 z 个字节。然后我想将 char 数组中的值返回。如果您能给我一个解释,我将不胜感激。从现在开始,这就是我的代码:
char * getData(FILE * fp, long * x)
{
int z = 0;
char * data = malloc(sizeof(char) * BUFFLENGTH);
strcpy(data,"");
while(z < BUFFLENGTH-2)
{
if(feof(fp) == 0)
{
data[z] = fgetc(fp);
z++;
x++;
}
else
{
strcat(data,"\0");
return data;
}
}
}
我知道触发了分段错误抛出了这一行:
data[z] = fgetc(fp);
但我不知道为什么。
【问题讨论】:
-
确保索引在范围内并且
fp不是NULL。 -
strcat(data,"\0");旨在追加零字节,但会导致 未定义的行为,因为不是指向以空字符结尾的字符串的指针可能会作为第一个参数传递。 -
您真的知道触发分段错误的行,使用调试器或其他什么?你没有发布你的想象力,是吗?
-
@MikeCAT ...但仍取决于
data[]的内容...顺便说一句:count是循环不变的,*x从未被引用。
标签: c char segmentation-fault fgetc