c - 如何在 C 中将 char 数组 case [0] 和 [1] 连接到 char 指针?

标签 c arrays pointers char concatenation

我想连接两个字符“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/

相关文章:

c - 与 C 中的结构和指针相关的问题

c - 使用 gcc 理解共享库

C 编译器优化器能否违反逻辑与表达式中操作数的短路和重新排序内存访问?

c# - 无法将 Json 数组发布到 Web 核心 API

arrays - 数组平均值矩阵

c - 分配一个字符指针数组

c - 将 FORTRAN EXTERNAL 数据类型传递给 C

c - 为什么我的 ASCII 整数值变成负数?

PHP,合并多维数组中的键

c - 这些语法的含义(指针算术?)