我使用以下方法迭代字符串:
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';
}
然而,当使用它时,它只会输出&#34; c是X&#34;,其中X是字符串的第一个字母。为什么不迭代整个字符串?
答案 0 :(得分:1)
它返回此行中的C
if (!isalpha(c) || !isspace(c)) {
return c;
}
函数在返回值
后完成执行了解如何使用&amp;&amp;和||
一些解释
如果c
是abc符号 - isalpha(c) = true , isspace(c) = false
true || false = true
如果c
是空格符号
isalpha(c) = false , isspace(c) = true
false || true = true
如果c
为数字,则会出现错误并打印1个符号
答案 1 :(得分:0)
1。替换这段代码:
if (!isalpha(c) || !isspace(c)) {
return c;
}
with:
if (!isalpha(c) && !isspace(c)) {
return c;
}
如果以下条件的 为真,您想要返回:
c
不是字母字符c
不是空格你的条件现在返回一个字符(并因此结束该功能) 如果它不是字母 或 如果不是空格。因此,通过给出一串字母,函数会将它们视为非空格,因此将返回第一个字符。
2。也替换循环条件:
for (int i = 0; i<strlen(word)-1; i++)
with:
for (int i = 0; i < strlen(word); i++)
通过检查最多strlen(word)-1
的字符,您不会检查最后一个字符。
答案 2 :(得分:-2)
好的,你想做什么 如果你只打印字母, 将退货换成&#34;继续&#34;