微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将字符串附加到另一个字符串时出现的转换错误

如何解决将字符串附加到另一个字符串时出现的转换错误

我正在尝试按照此处的建议将某个字符串(字符数组)附加到另一个字符串: https://stackoverflow.com/questions/10279718/append-char-to-string-in-c#:~:text=To%20append%20a%20char%20to%20a%20string%20in,because%20the%20given%20literal%20string%20cannot%20be%20modified

我的代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(){

char *mystring="Life";
int length_string=strlen(mystring);

char *string_continuation=" is life";
int length_continuation=strlen(string_continuation);

char *new_word=malloc(length_string+length_continuation+1);
strcpy(new_word,mystring);

for (int i=0; i<length_string; i++){
    
    
new_word[length_string+i]=string_continuation[i];

}
new_word[length_continuation+length_string]="\0";

printf("The final word is %s",new_word);
free (new_word);

return 0;
}

但是,我收到了典型的错误

assignment makes integer from pointer without a cast [-Wint-conversion]

指的是行:

 new_word[length_continuation+length_string]="\0"; 

有谁知道为什么会出现这样的错误?非常感谢

解决方法

在这个赋值语句中

new_word[length_continuation+length_string]="\0";

赋值的右操作数是字符串文字 "\0",其类型为 char[2],并在表达式中隐式转换为类型 char *

另一方面,左操作数的类型为 char。所以编译器会发出错误。

你需要写

new_word[length_continuation+length_string]='\0';

使用整数字符常量'\0'

注意 for 循环中有错别字。而不是

for (int i=0; i<length_string; i++){

必须有

for (int i=0; i<length_continuation; i++){

也可以使用标准 C 函数 strcat 代替 for 循环

strcat( new_word,string_continuation );

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。