【问题标题】:Copy content of Multidimensional array to single array将多维数组的内容复制到单个数组
【发布时间】:2017-02-17 15:27:23
【问题描述】:

我需要复制CryptoTables二维数组的特定字符串内容。

这是二维数组:-

#define CRYPTOENTRIES 10
unsigned char CryptoTables [CRYPTOENTRIES][7]= {"Sgehd",
                                                "Fshdj",
                                                "Hdbdh",
                                                "Gshsi",
                                                "Hiufs",
                                                "Rtygd",
                                                "Tyygf",
                                                "Gfftn",
                                                "Ffyhs",
                                                "Fghhx"};

如何将上述给定二维数组的任何特定位置的内容复制到另一个单个数组字符串 (char array[10];)?

例如,如果我必须将CryptoTables 中的第三个字符串(即Hdbdh)复制到另一个数组字符串。?

【问题讨论】:

  • strcpy(array, CryptoTables[2]);.

标签: c arrays string multidimensional-array


【解决方案1】:

您可以以foo[i] 的形式访问二维数组foo 的每一行。
因此,要复制CryptoTables 的第三个字符串,您可以使用以下代码:

char bar[7];
strcpy(bar, CryptoTables[2]);  

数组bar 必须足够大以容纳CryptoTables[2] 指向的字符串包括一个终止\0 字节。

【讨论】:

    【解决方案2】:

    所有条目的长度均为 5 个字符,因此新数组应为 char arr[6](5 个字符 + 空终止符字节)。如果你想复制它,只需解决想要的字符串:CryptoTables[2](第三个位置),然后使用strncpy 将其复制到arr - 在此处阅读:

    http://fresh2refresh.com/c-programming/c-strings/c-strncpy-function/

    【讨论】:

    • strcpy 会将CryptoTables[2] 指向的字符串,包括终止空字节\0 复制到arr 指向的缓冲区中。但是由于arr 的长度是5,这将导致buffer overrun
    • 你说得对,没时间写。添加它
    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 2016-12-11
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2016-05-26
    相关资源
    最近更新 更多