【问题标题】:How to store multiple string values into one string in C?如何在C中将多个字符串值存储到一个字符串中?
【发布时间】:2014-03-14 12:25:58
【问题描述】:

我是 C 的新手,所以请原谅我的一些错误。 我想知道是否有可能将多个字符串/数组值存储在一个字符串中?这是一个示例,可让您了解我要做什么。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const char *lister[] = {"H", "E", "LL", "O"}; //forgot brackets, fixed now

int main()
{
    char *mystring[] = ("%s%s", lister[1], lister[2]);
    printf ("%s\n", mystring);
    return 0;
}

不确定这是否有意义,但正在寻找将字符串值存储到另一个字符串或数组中的方法。 谢谢! :) 编辑:strncat 修复了这个问题,如果您遇到同样的问题,请转到http://www.tutorialspoint.com/c_standard_library/c_function_strncat.htm 了解更多信息,感谢 computerfreaker 建议 strncat!

【问题讨论】:

  • 您可以查看strcatstrncat。这两个函数都将一个字符串附加(conCATenate)到另一个字符串。 strcat 将一个完整的字符串附加到另一个; strncat 稍微安全一些,因为您可以指定第二个字符串中要附加到第一个字符串的字符数。
  • mystring 部分不起作用 - 使用 strcpy 和 strcat 复制和连接字符串。确保首先分配一个缓冲区。
  • @computerfreaker,您可能应该将您的评论作为答案,以便 OP 可以接受。
  • @Mauren 完成。感谢您举报我,否则我不会意识到 op 选择了我的建议!
  • char multistring[] = "one\0two\0three"; printf("%s, %s, %s\n", multistring, multistring + 4, multistring + 8);

标签: c arrays string gcc


【解决方案1】:

您缺少一对方括号:

const char *lister[] = {"H", "E", "LL", "O"};
//                ^^
//               Here

要将多个字符串与格式字符串合二为一,您可以使用sprintf,如下所示:

// Prepare the buffer for the output
char buf[100];
// The format string and parameters come from your code.
sprintf(buf, "%s%s", lister[1], lister[2]);

请注意,您的程序将生成第二个和第三个字符串的值,因为 C 数组中的初始索引为零,而不是一。

【讨论】:

    【解决方案2】:

    您也可以使用 sprintf 以您自己的格式将多个字符串处理为一个字符串。

    sprintf(destination_string, "%s----%s", source_string1,source_string2);
    

    【讨论】:

    • 太棒了,似乎是执行此操作的最短且最易读的方法。
    【解决方案3】:

    这个const char *lister = {"H", "E", "LL", "O"};应该是这个:

    const char **lister = {"H", "E", "LL", "O"};
    

    const char *lister[] = {"H", "E", "LL", "O"};
    

    【讨论】:

      【解决方案4】:

      您应该查看strcatstrncat。这两个函数都将一个字符串附加(conCATenate)到另一个字符串。

      strcat 将一个完整的字符串附加到另一个;您需要确保目标缓冲区足够大以容纳两个字符串以及一个尾随空字符 (\0)。

      strncat 稍微安全一些,因为您可以指定第二个字符串中要附加到第一个字符串的字符数,这意味着您始终可以确保缓冲区足够大以容纳所需的所有内容。

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 2021-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多