问题背景 :
根据 教程c语言进阶操作获取strchr结果前面的字符,但提示访问出错
pprogram received signal SIGSEGV, Segmentation fault
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char const *argv[])
{
char *a="hello";
char *p=strchr(a,'l');
char *t=(char *)malloc(strlen(p)+1);
t=strchr(p+1,'l');
// a or a[]都能创建数组,a是一个指针,指向第一个字符的地址,对a取值,a,得到的是第一个数组的值同时也是整个字符串数组,
printf("第一个找到l的字段%s\n",p);
printf("第二个找到l的字段为%s\n",t);
// 得到l前面的字符
char c=*p;
*p='\0';
char *r=0;
strcpy(r,a);
printf("l前面的字符为 %s",r);
*p=c;
return 0;
}
我的解答思路和尝试过的方法
将*a 换成a[]结果一样