C语言 怎么把char型附加在字符串的后面?

char *str = "awgweg";char c=✀c✀;*str += c; 这样为什么不行呢?
2025-02-26 06:12:33
推荐回答(4个)
回答1:

你这样加当然是不行的,首先char *str 你定义的是一个指针,那么 *str += c;这句就有语病了;一个指针怎么能和一个字符相加呢?
你可以这样编写:
char str[] = "awgweg";
char c = 'c';
str[sizeof(str) - 1] = c; //sizeof()这个函数是求出字符数组str的长度,那个这句就是将字符c变成为该数组的最后一个数组元素,也就是将字符c加在该字符串的最后
str[sizeof(str)] = '\0' //由于字符串是以字符‘\0’结尾的,所以该字符串的长度不是6而是7,执行上一句后,该字符串的'\0'变成了字符c,因此需要重新添加'\0'到该字符串的最后最为该字符串的结尾。程序执行了这两句后就实现了将字符c加到该字符串的后面了。
printf("%s\n",str);
这样字符'c'就加在字符串str后面了

回答2:

首先str只是一个指针,指向了一个字符串常量“awgweg",所以你不能再往后添加了,否则会引起内存覆盖异常。另外,*str+=c之后这个计算的只是字符串str的第一个字符a相加c,而不是把c给连接到str的后面。所以要么先申请一段内存给指针str,或者把str初始化成一个字符数组。然后再用数组操作。也可以调用strcat来连接两个字符串,但要小心操作,不要覆盖溢出。

回答3:

首先"awgweg"是个字符串常量,不可更改。
其次*str表示的是字符串的首字符'a'

回答4:

str是一个指针变量,*str的值为'a',是一个常量。而+=操作符的左值得是变量,所以运行会报错。
可以考虑使用数组:
char str[100] ="awgweg";
char c='c';
int iLen = strlen(str);
str[iLen] = 'c';
str[iLenb + 1] = 0;
之所以使用数组,是因为当指针指向字符串常量后,其内容是不能修改的。这是常量的特性