【发布时间】:2014-04-09 02:52:43
【问题描述】:
我想连接两个字符'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);
但上面的代码不起作用。我收到错误消息:“警告:从不同大小的整数转换为指针”。
在阅读了您所有的cmets和建议后,我得到了我想要的输出结果。
这是最终代码:
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);
【问题讨论】:
-
在
charac[2] = '\0';之后,你已经在charac中合并了。 -
请阅读 C-String 是什么。顺便说一句:string 有解释。
-
最大的编译问题是
charac[0]不是指针,所以(char*)charac[0]肯定会产生问题。你必须使用&charac[0]。也就是说,您可能应该阅读更多关于 C 字符串的内容。 -
@zneak 我使用 &charac[] 形式,它似乎工作,但最后一个 charac[] 重复两次。我得到的不是 79,而是 799。我怎样才能让它停止重复两次?没关系,我想我可能会找到我的解决方案。
标签: c arrays pointers char concatenation