首页 > 解决方案 > 计算c中的行单词和字符的程序

问题描述

在这段代码中,我想计算换行符和单词的字符数。但是第二个while循环有一些我无法理解的问题;代码也没有显示输出。

//program to count newlines new words and characters

#include<stdio.h>
int main()
{
    int c;
    int nl,nw,nc;//nl=newline,nw=new word,nc=new charcacter
    nl=nw=nc=0;
    while((c=getchar())!=EOF)
    {
        nc++;
        if(c=='\n')
        nl++;
        else if(c!=(' ')||c!=('\n'))
        {
            nw++;
            while(c!=' '||c!='\n')
            { 
                c=getchar();
                nc++;
            }
            nc++;
        }
    }
    printf("%d %d %d",nl,nc,nw);
}

标签: c

解决方案


此条件将始终为真:

(c!=(' ')||c!=('\n'))

||如果任一方的计算结果为真,则逻辑 OR 运算符的计算结果为真。如果c是空格,则第一部分为假,但第二部分为真,结果为真。如果c是换行符,那么第一部分将为真,第二部分甚至不会被评估,从而使结果为真。如果c是任何其他值,则两个部分都为真。

您想在此处使用逻辑与,仅当两个部分都为真时才为真。c如果不是空格c且不是换行符,您希望条件为真:

((c!=' ') && (c!='\n'))

推荐阅读