我在C语言里工作,我得把几件事连在一起.
现在我有这个:
message = strcat("TEXT ", var);
message2 = strcat(strcat("TEXT ", foo), strcat(" TEXT ", bar));
现在,如果你有C语言的经验,我相信你会意识到,当你试图运行它时,这会给你一个分段错误.那么我该如何解决这个问题呢?
我在C语言里工作,我得把几件事连在一起.
现在我有这个:
message = strcat("TEXT ", var);
message2 = strcat(strcat("TEXT ", foo), strcat(" TEXT ", bar));
现在,如果你有C语言的经验,我相信你会意识到,当你试图运行它时,这会给你一个分段错误.那么我该如何解决这个问题呢?
在C语言中,"字符串"只是普通的char
个array.因此,您不能直接将它们与其他"字符串"连接在一起.
可以使用strcat
函数,将src
指向的字符串附加到dest
指向的字符串的末尾:
char *strcat(char *dest, const char *src);
这是一个example from cplusplus.com:
char str[80];
strcpy(str, "these ");
strcat(str, "strings ");
strcat(str, "are ");
strcat(str, "concatenated.");
对于第一个参数,需要提供目标缓冲区本身.目标缓冲区必须是字符数组缓冲区.例如:char buffer[1024];
Make sure确保第一个参数有足够的空间来存储您试图复制到其中的内容.如果可用,使用像:strcpy_s
和strcat_s
这样的函数会更安全,在这些函数中,您必须显式指定目标缓冲区的大小.
Note:字符串文字不能用作缓冲区,因为它是常量.因此,您必须始终为缓冲区分配一个字符array.
返回值strcat
可以忽略,它只返回与第一个参数相同的指针.它的存在是为了方便,并允许您将调用链接到一行代码中:
strcat(strcat(str, foo), bar);
所以你的问题可以解决如下:
char *foo = "foo";
char *bar = "bar";
char str[80];
strcpy(str, "TEXT ");
strcat(str, foo);
strcat(str, bar);