gpt4 book ai didi

C 中的连接字符串

转载 作者:行者123 更新时间:2023-11-30 17:45:29 25 4
gpt4 key购买 nike

我正在尝试类似的java等价物str =“东西”+ str;

我尝试使用 sprintf(str, "stuff %s", str);和 str = strcat("东西", str);这些都不起作用...我是否被迫使用第二个字符串来保存结果?

类似于 sprintf(str2, "stuff %s", str) 或 str2 = strcat("Stuff ", str);

最佳答案

阅读文档。 strcat 的正确形式是

strcat(char* destination, const char* source);

它将把附加到目标。你的方法是倒退的 - 由于 "Stuff" 是一个 const char*,所以它会失败。

strcat(str, "Stuff");

应该可以工作,导致 str 包含原始字符串,后跟 Stuff

示例:

include <stdio.h>
#include <string.h>

int main(void) {
char string[256];
char s2[256];
strcpy(string, "hello ");
strcat(string, "world");
printf("The concatenated string is '%s'\n", string);
sprintf(string, "I say %s", string);
printf("The new string is '%s\n'", string);
strcpy(string, "hello world");
sprintf(s2, "I say %s", string);
printf("And now it is '%s'\n", s2);
}

结果

The concatenated string is 'hello world'
The new string is 'I say I say world
'And now it is 'I say hello world'

如您所见,您需要将 sprintf 的结果放置在不同的字符串中,否则内容将被覆盖(当编译器开始读取 string 时)到格式字符串中,它已被覆盖...)

我认为没有办法创建字符串的副本来完成您要做的事情 - 在前面添加一个字符串常量。有些语言只会宠坏你......

关于C 中的连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com