【发布时间】:2017-05-12 05:47:47
【问题描述】:
我正在使用下面的方法来遍历一个字符串:
char is_words(char *word)
{
if (word != NULL) {
for (int i = 0; i<strlen(word)-1; i++) {
char c = word[i];
printf("c is: %c\n", c);
if (!isalpha(c) || !isspace(c)) {
return c;
}
}
}
return 'a';
}
然而使用它时,它只打印出“c is X”,其中 X 是字符串的第一个字母。为什么不遍历整个字符串?
【问题讨论】:
-
请提供minimal reproducible example。例如我们怎么知道字符串不是像“123”这样会导致第一个
return执行的? -
可能需要将
if语句中的||替换为&&。 -
return终止函数执行并将控制权返回给调用者函数。 -
请注意,您在 each 迭代中计算
strlen(word)。还有更好的方法 -
@BasileStarynkevitch 已修复,谢谢!