繁体   English   中英

C语言,如何在2d数组中找到一个单词的长度?

[英]C language, how find the length of a word in a 2d array?

我试图为一个for循环做一个条件,我必须说(c<wordlength)但我不知道如何找到单词的长度。

所以我可以说我有一个叫做...

char shopping[10][10]={"BAGELS","HAM","EGGS"};

找到shopping [0]有6个字母的正确语法是什么?

正确的语法是

strlen(shopping[0])

这将返回不包含NUL终止符的size_t类型的值。

有关详细信息,请参阅man strlen

如果你使用strlen(unchanging_string)作为循环的终止条件,那么在循环之前调用它一次是谨慎的,而不是在每次迭代时调用它。

循环遍历shopping[0]字符的另一种方法如下:

char *s = shopping[0];
while (*s) {
  /* (*s) is the current character */
}
size_t len = strlen(shopping[0]);

但请注意,您不应该写:

 for (size_t i = 0; i < strlen(shopping[0]); i++) 

这可能会导致长字符串的性能下降。 使用:

size_t len = strlen(shopping[0]);
for (size_t i = 0; i < len; i++)

实际上, shopping[0]有7个字符,你忘记了\\0字符串终止的字符。 虽然strlen()给你字符串的长度,在\\0之前的那个char数。

strlen(shopping[0])

但是Total char是strlen(shopping[0]) + 1 = 7

在记忆中你的shopping[0]是这样的:

+----+----+----+---+---+----+----+----+---+---+ 
| 'B'| 'A' |'G'|'E'|'L'| 'S'|'\0'| 0  | 0 |   |
+----+----+----+---+---+----+----+----+---+---+
                              ^ `\0` also a char in shopping[0]

编辑

当我再次阅读你的问题时,你会说6个字母所以strlen(shopping[0] )是你的答案给你6。

因为你想要一个循环来查找字母数(我的答案中的字符'\\ 0'),所以调用strlen()是没用的。 我想你应该在C中利用空终止字符串:

int num=0;
for(num = 0; shopping[0][num]!='\0'; num++);
printf("\n  number of letters are %d\n",num);

我认为其他答案都不好,他们使用strlen()是不必要的。 如果我遗失了什么,请告诉我

您可以使用for循环编写代码以查找购物数组中每个元素的大小:

for(i =0;i<10;i++)
{
    j=0;
    while(shopping[i][j])
    {
        j++;
    }
}

其中j将返回每个购物数组元素的大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM