为什么这段代码在gcc中给出了分段错误

时间:2015-08-23 07:02:06

标签: c

void init(){

pre=malloc(sizeof(char)*50);
opt=malloc(sizeof(char)*50);
p=malloc(sizeof(char)*50);
prec=0;
printf("%p\n%p\n%p\n",p,opt,pre);
printf("Enter the infix exp\n");
fgets(p,50,stdin);
if(strlen(p)-1=='\n')
p[strlen(p)-1]='\0';
}

即使我使用指针输入字符串。我检查了所有针对null的指针

1 个答案:

答案 0 :(得分:2)

if(strlen(p)-1=='\n')

应该是

if(p[strlen(p) - 1] == '\n')

这将检查p的最后一个字符\n是否来自fgets