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 <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的主要内容,如果未能解决你的问题,请参考以下文章
c语言中怎么用命令提示窗口编译宏定义并打印出来!请指教.谢谢了.