gpt4 book ai didi

c - 如何使用 fscanf 读取 c(Segmentation Fault) 中的文件?

转载 作者:太空宇宙 更新时间:2023-11-03 23:44:01 24 4
gpt4 key购买 nike

我是 stackoverflow 的新用户。我用 c 语言编写了这段代码,没有问题,输出是正确的。

#include <stdio.h>
#include <stdlib.h>

int main()
{
char *str[10];
FILE * fp;

fp = fopen ("file.txt", "w+");
fputs("We\nare\nin\n2016", fp);

rewind(fp);

fscanf(fp, "%s", str[0]);
fscanf(fp, "%s", str[1]);

printf("Read String1 |%s|\n", str[0] );
printf("Read String2 |%s|\n", str[1] );

fclose(fp);

return(0);
}

但是当我使用 char *str[15] 而不是 char *str[10] 时,结果是段错误。怎么了?

最佳答案

指针str[0]str[1] 未初始化。所以,您的程序有未定义的行为

要么您需要使用 malloc() 进行分配,要么使它们成为具有足够固定长度的数组数组(例如 str[2][256];)对于您从文件中读取的字符串。无论如何,我个人会使用 fgets() 而不是 fscanf(),然后根据需要解析该行。

这也有助于对所有函数(fopen()、fscanf() 等)进行错误检查。

关于c - 如何使用 fscanf 读取 c(Segmentation Fault) 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39077875/

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