这里的不同之处在于,您实际上是在使用两个空数组,试图将它们合并到一个的内存空间中(不确定这对您是否有意义)。
首先,在 C 语言中,你必须用\0
. 这在 Java 中是不公开或不可见的。此外,您基本上使用了两个未定义的字符串(因为没有设置值)。
#include <stdio.h>
#include <string.h>
char target[256];
const char source_a[] = "Hello";
const char source_b[] = "World!";
int void(main)
{
target[0] = '\0'; // this essentially empties the string as we set the first entry to be the end. Depending on your language version of C, you might as well write "char target[256] = {'\0'};" above.
strcat(target, source_a); // append the first string/char array
strcat(target, " "); // append a const string literal
strcat(target, source_b); // append the second string
printf("%s\n", target);
return 0;
}
重要提示:使用strcat()
可以不保存,因为没有执行长度检查,并且除了 Java 之外,这些“字符串”具有固定长度(您在定义变量时设置的长度)。如果没有给出长度,但您在初始化时复制了一个字符串,则采用该长度(例如,长度为char test[] = "Hello!";
7 个字符(由于终止\0
))。
如果您想在字符串上使用更类似于 Java 的方法,请使用 C++ 和std::string
类,它的执行与 Java 的字符串更相似。