【发布时间】:2015-04-26 02:18:57
【问题描述】:
所以我正在尝试编写一个函数,该函数将接收两个指向字符的指针并返回一个指向它们连接的新指针。这是我的尝试:
#include <stdio.h>
#include <stdlib.h>
char * append (char *, char *);
int main(void) {
char *start = "start";
char *add = "add";
char* newString = append(start, add);
printf("%s\n", newString);
return 0;
}
char * append(char *start, char *add) {
char *newArray = malloc(sizeof(char) * 100);
//get to end of start word
while (*start != '\0') {
*newArray = *start;
newArray++;
start++;
}
while (*add != '\0') {
*newArray = *add;
newArray++;
add++;
}
return newArray;
}
两个问题:
1) 到目前为止,它可以编译,但没有打印任何内容。我认为这是因为我的 append 函数返回一个指向连接字符末尾的指针。我应该创建一个临时字符指针并在一开始就将其设置为 newArray(这样我就可以返回它)吗?否则,我必须以某种方式减少我的指针,直到我回到开始。但是没有任何值(比如字符串结尾的 '\0')会告诉我我在 char 数组的开头...
2) 我读到我不能只使用 sizeof() 一个 char 指针,所以我不确定在 append 函数的第一行将什么作为参数传递给 malloc。 100 只是一个“足够大”的幻数,我想摆脱它......
如果我可以使用 sizeof() 一个字符指针,我会这样做:
char *newArray = malloc(sizeof(strlen(start) + strlen(add)) + 1);
感谢您的帮助,
布莱曼
【问题讨论】: