当前代码,它输出:
hjk
hg
kjgj
Word 0: 12
Word 1: 0
Word 2: 0
应该是:
Word 0: 3
Word 1: 2
Word 2: 4
我不知道我做错了什么,这是代码:
#include <stdio.h>
#define MAX_WORDS_COUNT 10
main()
{
int wordsLength[MAX_WORDS_COUNT];
int i, c, inspace = 0, currWord = 0;
for (i = 0; i < MAX_WORDS_COUNT; i++)
wordsLength[i] = 0;
while ((c = getchar()) != EOF) {
if (c != ' ' || c != '\t' || c != '\n') {
wordsLength[currWord]++;
inspace = 0;
} else {
if (inspace == 0)
currWord++;
inspace = 1;
}
}
for(i = 0; i < MAX_WORDS_COUNT; i++)
printf("Word %d: %d\n", i, wordsLength[i]);
}
答案 0 :(得分:6)
if (c != ' ' || c != '\t' || c != '\n') {
你应该使用&amp;&amp;。你有3个相互排斥的条件,并且正在对它们进行ORing,这意味着所有条件都满足这个条件。
if (c != ' ' && c != '\t' && c != '\n') {
会奏效。
答案 1 :(得分:2)
您需要&&
而不是||
...否则请查看您发布的输出,它认为所有12个字符属于一个字。
更改此内容:if (c != ' ' || c != '\t' || c != '\n')
收件人:if (c != ' ' && c != '\t' && c != '\n')