【发布时间】:2020-09-06 19:17:26
【问题描述】:
我有一个函数以特定方式混合2个字符串,并生成一个新字符串,我该如何分配新字符串的内存?
我已尝试添加此代码,但我不确定如何将其用于我不知道的字符串中。
#include <stdio.h>
#include <string.h>
char *CreateString(char *string1, char *string2) {
int size;
int size1 = 0;
int size2 = 0;
for (int i = 0; *(string1 + i); i++) {
size1++;
}
for (int i = 0; *(string2 + i); i++) {
size2++;
}
size = (size1 * size2) + size1;
char string[size];
char *stringptr = string;
for(int i = 0; i < size; i = i + size2 + 1) {
*(stringptr + i) = *(string1++);
for (int j = 0; j < size2; j++) {
*(stringptr + i + j + 1) = *(string2 + j);
}
}
puts(string);
}
int main() {
char string1[] = "chocolate";
char string2[] = "123";
CreateString(string1, string2);
return 0;
}
【问题讨论】:
-
计算新的大小并用 malloc 分配那么多(+1 为 \0)。
-
调用 malloc 如下:(char*)malloc(strlen(the_string) + 1)。为空字符添加一个 ('\0)
-
您想了解
strlen。并写string1[i]而不是*(string1+i)。后者没有错,但可读性较差。 -
@Adam 从不强制转换 malloc 的返回值。
-
你期望什么输出?我很确定你的函数可以用 3-4 行代码重写。
标签: c string function pointers malloc