将一个字符串附加到另一个字符串时出现的转换错误
casting error arising upon appending a string to another one
我正在尝试按照此处的建议将某个字符串(字符数组)附加到另一个字符串:
我的代码如下:
#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]="[=10=]";
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]="[=12=]";
有谁知道为什么会出现这样的错误?非常感谢
在这个赋值语句中
new_word[length_continuation+length_string]="[=10=]";
赋值的右操作数是字符串文字 "[=15=]"
,类型为 char[2]
,并在表达式中隐式转换为类型 char *
.
另一方面,左操作数的类型为char
。所以编译器发出错误。
你需要写
new_word[length_continuation+length_string]='[=11=]';
使用整数字符常量'[=19=]'
。
注意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 );
我正在尝试按照此处的建议将某个字符串(字符数组)附加到另一个字符串:
我的代码如下:
#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]="[=10=]";
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]="[=12=]";
有谁知道为什么会出现这样的错误?非常感谢
在这个赋值语句中
new_word[length_continuation+length_string]="[=10=]";
赋值的右操作数是字符串文字 "[=15=]"
,类型为 char[2]
,并在表达式中隐式转换为类型 char *
.
另一方面,左操作数的类型为char
。所以编译器发出错误。
你需要写
new_word[length_continuation+length_string]='[=11=]';
使用整数字符常量'[=19=]'
。
注意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 );