我想连接两个字符“7”和“9”以形成字符串“79”。
首先,我初始化了变量。 (限制:我只能使用 char 类型,并且不能创建另一个类似 charac 的变量。)
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';
该数组现在是 printf()
友好的,因为它以 null 结尾。
关于c - 如何在 C 中将 char 数组 case [0] 和 [1] 连接到 char 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22951919/