69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
int main()
{
char a[32]="dsad";
char *b="dsdffff";
char *p = a;
while(*p++)
;
p--; /*后退一个字符,指向a的'\0'*/
while(*p++ = *b++)
;
*p = 0; /* 添加'\0'*/
printf("%s\n",a);
return 0;
}
三个问题:
1. 字符串常量不能修改,所以*a++= *b++;就会对a修改;
2. 即使a可以修改,那么*a++ = *b++;指针a已经指向了字符串的末尾,直接输出a不能将连接后的字符串输出;
3. 字符串的'\0'没有赋值给a;
你的指针是指向常量区的字符串,不能修改,否则程序会崩,如果你要修改,用字符数组的形式保存,写成:char a[100]="dsad";
你的指针a指向了字面量字符串,那是不可修改的常量,不能拼接