C语言,下面打印出来的结果是Segmentation fault: 11

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,下面打印出来的结果是Segmentation fault: 11相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <string.h>
int main(void)

char ch[20]=;
char ch1;
int i=0;
scanf("%s",ch);
getchar();
scanf("%c",&ch1);
char *p=strchr(ch,ch1);
while(ch[i]!='\0')

if(p!=NULL)

printf("%lu\n",p-ch+1);

p = strchr(p+1,ch1);
i++;

return 0;

#include <stdio.h>
#include <string.h>
int main(void)

    char ch[20]=;
    char ch1;
    int i=0;
    scanf("%s",ch);
    getchar();
    scanf("%c",&ch1);
    char *p=strchr(ch,ch1);
    while(p)
    
          printf("%lu\\n",p-ch+1);
           p = strchr(p+1,ch1);
   
    return 0;

修改如上

如果p为NULL执行 strchr(p+1,ch1);时会出错

所以当p为NULL的时候 直接退出循环(ch中没处理的字符中没有ch1的情况)

参考技术A #include <stdio.h>
#include <string.h>
int main(void)

    char ch[20]=0;
    char ch1;
    int i=0;
    scanf("%s",ch);
    getchar();
    scanf("%c",&ch1);
    char *p=strchr(ch,ch1);
    while(p)
    
printf("%lu\\n",p-ch+1);
p = strchr(p+1,ch1);
    
    return 0;

追问

while(p)是相当于while(p!=NULL)吗?

追答

以上是关于C语言,下面打印出来的结果是Segmentation fault: 11的主要内容,如果未能解决你的问题,请参考以下文章