strcat循环为什么不能用

来源:百度知道 编辑:UC知道 时间:2024/05/06 15:24:59
#include<string.h>

main()
{
char* aa="aaa";
int i;
clrscr();
for(i=0;i<10;i++)
aa=strcat(aa,"b");
printf("%s",aa);
getch();

}
结果为aaab 为什么不是aaabbbbbbbbbb

指针aa指向的是一个字符串常量,字符串常量在常量静态存储区域,不能用指针操作的,你吧代码改成下面的就行了。char a[50];是在栈上分配内存,并且有足够大小所以能正确操作。

#include<string.h>

void main()
{
char aa[50]="aaa";

int i;

for(i=0;i<10;i++)
strcat(aa,"b");

printf("%s\n",aa);

}

指针aa指向的是一个字符串常量,它处于内存中未知的地方,你是不能随便操作它和它后面的内存的。
使用字符串的话一定要记得申请内存