gpt4 book ai didi

c - 段错误,指针数组

转载 作者:行者123 更新时间:2023-11-30 15:14:20 25 4
gpt4 key购买 nike

为什么我会收到段错误错误?我已经记录了很多,但无法澄清这一点。

char * sir=malloc(50*sizeof(char));
char * aux;
int i;

for(i=1;;i++)
{
fgets(aux, 50, stdin);

if(strcmp(aux,"END")==0)
break;
else
{
sir[i]=malloc(50 * sizeof(char));
strcpy(aux,sir[i]);
}
}

如果我使用静态分配,则会出现无限循环。

最佳答案

指针aux未初始化并且具有不确定的值

char * aux;

因此在这个循环中尝试使用指针写入数据

for(i=1;;i++)
{
fgets(aux, 50, stdin);
//...

导致程序出现未定义的行为。

也许这是一个拼写错误,您的意思是 str 而不是 aux尽管如此,无论如何这个声明

sir[i]=malloc(50 * sizeof(char));

没有意义。

这个cpmparison也是错误的

if(strcmp(aux,"END") == 0)

因为使用fgets读取的字符串可以包含换行符。

关于c - 段错误,指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34105385/

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