我试图为for循环创建一个条件,我必须说(c<wordlength)
但我不知道如何找到单词的长度。
所以我想说我有一个名为......的文件。
char shopping[10][10]={"BAGELS","HAM","EGGS"};
找到shopping [0]有6个字母的正确语法是什么?
答案 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 */
}
答案 1 :(得分:5)
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++)
答案 2 :(得分:2)
实际上shopping[0]
有7个字符,您忘记了\0
字符串终止字符。虽然strlen()
给你字符串的长度,\0
之前的字符数。
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()是不必要的。如果我遗失了什么,请告诉我
答案 3 :(得分:1)
您可以使用for
循环编写代码,以查找购物数组中每个元素的大小:
for(i =0;i<10;i++)
{
j=0;
while(shopping[i][j])
{
j++;
}
}
其中j
将返回每个购物数组元素的大小。