【发布时间】:2017-08-30 10:29:24
【问题描述】:
我想用 C 语言创建一个简单的 str_join 函数(以了解更多关于指针和数组的知识),它实际上将两个字符串连接在一起。
#include <stdio.h>
#include <stdlib.h>
int str_size(char *str);
void str_join(char *str1, char *str2);
int main(int argc, char **argv)
{
char *part1 = "Hello ";
char *part2 = "World!";
str_join(part1, part2);
printf("%s\n", part1);
return 0;
}
int str_size(char *str)
{
char c;
for(int i = 0;; i++)
{
c = str[i];
if(c == '\0')
return i + 1;
}
}
void str_join(char *str1, char *str2)
{
int str_size_1 = str_size(str1) - 1; //Last char is '\0', don't need them 2 times
int str_size_2 = str_size(str2);
char str3[str_size_1 + str_size_2];
int i;
for(i = 0; i < str_size_1; i++)
str3[i] = str1[i];
for(i = 0; i < str_size_2; i++)
str3[i + str_size_1] = str2[i];
str1 = (char *)str3;
}
看起来很简单(也许太简单了)。 我将输出除外:
Hello World
但它看起来像:
Hello
我使用以下命令编译了程序:
gcc main.c -o main
然后运行它:
./main
我没有看到我的失败,有人可以指出我的错误吗? 谢谢你帮助我!
【问题讨论】:
标签: c pointers parameter-passing function-call