gpt4 book ai didi

尝试读取文件时代码崩溃

转载 作者:行者123 更新时间:2023-12-02 07:28:56 25 4
gpt4 key购买 nike

当我尝试从中读取以下代码时,它会崩溃。
我在这一行中发现了段错误fgets(s, sizeof(str[i]), fp);

#include <stdio.h>

int main()
{
char *str[] = {"John ", "Linus ", "Michael ", "Bill"};
char *s;

int i;

FILE* fp;

if((fp = fopen("E:\\Files\\string.txt", "w")) == NULL)
{
printf("Error creating file");
return 0;
}

else
{
for(i = 0; i < 4; ++i)
{
fputs(str[i], fp);
fflush(fp);
}

fclose(fp);
}

if((fp = fopen("E:\\Files\\string.txt", "r")) == NULL)
printf("Error opening file");
else
{
for(i = 0; i < 4; ++i)
{
fgets(s, sizeof(str[i]), fp);
printf("%s ", s);
}

fclose(fp);
}

return 0;
}

最佳答案

关于:

fgets(s, sizeof(str[i]), fp);
变量 s只是一个未初始化的指针,它包含每个垃圾在其所在位置的堆栈中的内容。使用该指针而不对其进行初始化会导致未定义的行为并且可以(如您所见会导致段错误事件。
建议更改 s的定义到:
char s[sizeof(str)];
表达式 sizeof(str[i]) is referencing a single byte, perhaps you meant: 大小(str);`

关于尝试读取文件时代码崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63463383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com