RT, 这样为什么不行呢?
char *str = "awgweg";
char c='c';
*str += c;
可以考虑使用数组:
char str[100] = "awgweg";
char c='c';
int iLen = strlen(str);
str[iLen] = 'c';
str[iLenb + 1] = 0;
之所以使用数组,是因为当指针指向字符串常量后,其内容是不能修改的。这是常量的特性!
你那样写编译是可以通过,但是是运行不了的。原因是你声明是用指针,而用指针来声明字符串,系统会自己按需分配空间。
你应该弄一个字符数组,要是要用指针的话就声明了数组后再用指针指向数组基址就O啦。
C语言不像Java一样弄个'+'号就可以了,你可以选择用文件中 的strcat函数或者你也可以自己写一个,比如我给你写一个:
char str[100]="awgweg";
char c='c';
int i;
for(i=0;*(str+i)!='\0';i++);
*(str+i)=c;
我用了一个数组,代码如下:
#include
#include
int main()
{
char str="awgweg",str2[80]={'0'};
char c='c';
int i=0;
for(i=0;i<strlen(str);i++)
{
str2[i]=(str+i);
}
str2[i]=c;
str=str2;
printf("%s",str);
}
char *str = "awgweg";已经初始化,是静态的,不能修改。
楼上已经说了很多实现的方式,都是可以实现的。
楼主写的这个程序,*str += c;在运行时会报错。str是一个指针变量,*str的值为'a',是一个常量。而+=操作符的左值得是变量,所以运行会报错。