gpt4 book ai didi

c - 为什么 C 代码会出现段错误?

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

我只想知道为什么这段代码会出现段错误。

if(argc < 2){
printf("\n Please mention the file name");
exit(1);
}
FILE* fp;
if((fp = fopen(argv[1],"r")) == NULL){
printf("\n can't open file");
exit(1);
}
char* str;
fgets(str,80,fp);
printf("\n this is the output %s",str);

如果我将 str 声明为 char str[100],那么它工作正常。

最佳答案

您没有分配任何内存;您只是在声明一个 char *char str[100] 将起作用,或者:

char *str = malloc(100);

这将为您的字符串分配内存。否则,您只是从 fgets() 读取到不属于您的内存,并导致段错误。

如果您这样做,请确保在完成后对其调用 free()

关于c - 为什么 C 代码会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014478/

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