【问题标题】:Assigning a string to a 2D array将字符串分配给二维数组
【发布时间】:2010-06-03 14:00:00
【问题描述】:
char in[100], *temp[10],var[10][10];
int i, n = 0,
double val[10];
var[0][]="ANS";

我想为 var[0][0,1,2] 分配一个字符串,它是“ANS”,但不起作用,我不知道我错在哪里

【问题讨论】:

    标签: c string arrays 2d


    【解决方案1】:

    您已经回答了自己的问题。您想将 var[0][0,1,2,3] 分配给“ANS”,对吗?好吧,“ANS”是一个字符数组,ans[0,1,2,3](不要忘记空终止符)。所以你必须单独分配每一个。在 C 中,字符串不是数据类型,它们只是其他变量的数组(确切地说是字符)。你可以做的是:

    strcpy(var[0], "ANS");
    

    哪个会为您逐字节复制。

    然而,strcpy 有一些陷阱。首先,目标 char 数组(在本例中为 var[0])必须足够大以包含字符串。它不会为您检查(实际上它不能),因此如果您不小心,可能会导致缓冲区溢出。此外,源必须以 NULL 结尾。

    【讨论】:

      【解决方案2】:

      也许改为使用,

      strncpy(var[0], "ANS", 3);
      

      【讨论】:

        【解决方案3】:

        当你写作时

        var[0][] = "ANS"
        

        编译器尝试将“ANS”分配给 var[0][0],这是一个只存放一个字符的地方。

        因此,您应该使用 strcpy 函数。 strcpy 将逐个字符地复制。

        【讨论】:

          猜你喜欢
          • 2021-12-07
          • 2020-07-27
          • 1970-01-01
          • 2017-12-12
          • 1970-01-01
          • 1970-01-01
          • 2019-09-04
          • 1970-01-01
          • 2015-12-06
          相关资源
          最近更新 更多