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的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中如何实现用键盘输入一个字符串,并打印出来?

c语言中怎么用命令提示窗口编译宏定义并打印出来!请指教.谢谢了.

Python语言编写程序,将两个整数a和b合并成一个整数放到c里面,并打印出来?

C语言全排列问题为啥用指针比数组慢很多?

计算机二级C语言上机考试编程题修改如何改文件数据拿分?

C语言float类型只打印一位小数会自动四舍五入吗