我想连接两个字符'7'和'9'以形成这个字符串“79”。
首先,我初始化了变量(限制:我必须只使用char类型,并且不能生成另一个charac-like变量。)
char *charac = (char *) malloc(sizeof(char) * 200);
char *combined = (char *) malloc(sizeof(char) * 200);
然后给出charac[0]和charac[1]的值。
charac[0] = '7';
charac[1] = '9';
printf("charac[0] : %c\n", charac[0] );
printf("charac[1] : %c\n", charac[1] );
我想连接charac[0]和charac[1]
strcpy(combined, (char*)charac[0]);
strcat(combined, (char*)charac[1]);
printf("combined : %s\n", combined);
free(combined);
但上面的代码不起作用我收到错误消息:“警告:从不同大小的整数转换为指针”。
在阅读了你所有的评论和建议之后,我得到了我想要的输出结果。
以下是最终代码:
char *charac = (char *) malloc(sizeof(char) * 200);
char *combined = (char *) malloc(sizeof(char) * 200);
charac[0] = '7';
charac[1] = '9';
charac[2] = '\0';
printf("charac[0] : %c\n", charac[0] );
printf("charac[1] : %c\n", charac[1] );
printf("charac[2] : %c\n", charac[2] );
strcpy(combined, & charac[0]);
strcat(combined, & charac[1]);
strcpy(combined, & charac[0]);
strcat(combined, & charac[2]);
printf("combined : %s\n", combined);
free(combined);
最佳答案
它们已经按原样连接起来了这是因为他们在记忆中就在一起您已经在同一个数组和相邻索引中声明了它们。
+---------------+
| '7' | '9' |
+---------------+
[0] [1]
这是内存中的数组七(
charac[0]
)就在九(charac[1]
)旁边。如注释中所建议的,只需
null
终止数组即可完成连接。charac[2] = '\0';
数组现在是友好的,因为它以空结尾。