【问题标题】:How to find the length of an char array in c如何在c中找到char数组的长度
【发布时间】:2011-05-14 11:57:20
【问题描述】:

我想知道这个的长度:

char *s[]={"s","a","b"};

它应该用 /0 计数 4 但 strlen 或 sizeof(s)/sizeof(char) 给了我错误的答案.. 怎么找到?

【问题讨论】:

    标签: c arrays


    【解决方案1】:

    您正在创建char* 的数组,而不是char 的数组。这就是strlen 不起作用的原因。使用

    sizeof(s) / sizeof(char*) //should give 3
    

    如果你想要一个字符串使用

    char s[] = "sab";
    

    【讨论】:

      【解决方案2】:

      sizeof(s) / sizeof(s[0]) 无论s 包含什么类型都有效。

      【讨论】:

      • +1:我更喜欢sizeof s / sizeof *s(或者,使用多余的括号,sizeof (s) / sizeof (*s))。
      【解决方案3】:

      您定义的不是字符串,因此没有 NULL 终止字符。在这里,您已经声明了指向 3 个单独字符串的指针。顺便说一句,您应该将您的数组声明为const char*

      【讨论】:

        【解决方案4】:

        没有直接的方法来确定 C 中数组的长度。C 中的数组由内存中的连续块表示。

        您必须将数组的长度保留为单独的值。

        【讨论】:

          【解决方案5】:

          strlen 如果您以空字符终止数组,则可以使用。除非您跟踪它,否则您无法在 char 数组中找到元素的数量。即将它存储在像n这样的变量中。每次添加成员增量 n 和每次删除减量 n 时

          【讨论】:

            【解决方案6】:

            为什么要数 4?你在这个数组中有 3 个指向 char 的指针,在大多数 32 位平台上它应该是 12 个。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-09-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-06
              • 2014-01-28
              • 2010-12-25
              • 2011-05-05
              相关资源
              最近更新 更多