【发布时间】:2017-03-29 15:52:19
【问题描述】:
我在尝试使用 fscanf 从文件读取到字符串时遇到分段错误错误,我们将不胜感激。
int main()
{
char temp[100];
FILE *fp = fopen("test.txt", "r");
if (fp == NULL)
{
printf("error");
}
memset(temp, 0, strlen(temp));
while (fscanf(fp,"%s", temp)==1)
{
}
return 0;
}
【问题讨论】:
-
输入文件的内容? (它可能有一个超过 99 个字符的字符串吗?)
-
除了其他 cmets 和答案:
memset(temp, 0, strlen(temp));根本不需要,因为无论如何你fscan到temp。 -
@MichaelWalz 我仍然认为为了安全起见,在
char数组的开头至少有一个空终止符是个好主意。 -
@BetaCarotin
memset(temp, 0, strlen(temp))提供什么“安全”?如果fscanf(fp,"%s", temp)==1不为真,则不指定temp的内容以保留零。如果有的话,代码应该使用 wdith 限制fscanf(fp,"%99s", temp)来表示“安全”。 -
@chux 无。我说的是如果有
char数组,前面应该有0。
标签: c segmentation-fault scanf