gpt4 book ai didi

创建一个包含先前声明的字符串 var 的新字符串

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:26 25 4
gpt4 key购买 nike

我想做一些看起来像这样的事情(虽然显然不是有效的 C 代码):

char test[] = "you";
char new[] = "hey %s over there", test; // Want to get back "hey you over there"

这是我的方法,但它似乎太复杂了。获取 test 和 new 的 len,创建一个可以容纳两个长度的新字符串缓冲区,将 new 和 test 连接到字符串缓冲区。有更好的方法吗?

还有 char hi[] = "hi"char *hi = "hi"。有什么区别?

最佳答案

好吧,这是在 C 中历史悠久的传统方式,尽管我认为您指的是 test 的长度和字符串文字,因为 new 不是有一个长度,直到您将数据写入其中。

另外,如果您曾经期望您的代码将在 C++ 编译器中使用,请不要将您的变量称为 new :-) 尽管我假设这只是一个快速而肮脏的代码示例,因为 new 无论如何都不是一个很好的变量描述性名称(newString 或类似的东西会更好).

如果您可能经常这样做,那么编写一个辅助函数来为您完成所有繁重的工作是没有问题的。这可能会使您的代码看起来更清晰,但我只是使用 strcpy/strcat/strlen/sprintf 等来寻求您当前的解决方案。

或者,您可以使用第三方代码,例如 the better string library 、许可证和管理态度允许(许可证是 BSD/GPL,但管理有时仍然是个问题)。

它的优点是不会像某些第三方库那样拖入大量无关的功能。它所做的只是字符串处理。


关于这两者的区别:

char hi[] = "hi";
char *hi = "hi";

第一个为您提供了一个可修改的字符数组,而后者则没有(尝试 hi[0] = 'a'; 在这两种情况下,对后者这样做将是未定义的行为)。后者还允许您将 hi 指针的值更改为指向其他地方。

关于创建一个包含先前声明的字符串 var 的新字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9660088/

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