c - 计算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!=('\n'))
||
如果任一方的计算结果为真,则逻辑 OR 运算符的计算结果为真。如果c
是空格,则第一部分为假,但第二部分为真,结果为真。如果c
是换行符,那么第一部分将为真,第二部分甚至不会被评估,从而使结果为真。如果c
是任何其他值,则两个部分都为真。
您想在此处使用逻辑与,仅当两个部分都为真时才为真。c
如果不是空格c
且不是换行符,您希望条件为真:
((c!=' ') && (c!='\n'))
推荐阅读
- android - 错误:未知的命名模块“react-native-webrtc”
- python - 在 Matplotlib 上绕一个更大的圆的圆周旋转圆?
- css - 如何使轮播响应?
- c# - 使用相同用户 ID 将用户导入 AWS Cognito
- javascript - 单击后如何隐藏 React 容器?
- python - 如何将字符串从 Python 服务器发送到 Kotlin 客户端
- c - 打开系统调用模式参数编号混淆
- r - 通过在 R 中给某个变量一个值来简化方程
- python - 如何准确计算一系列点的移动平均线的斜率?
- mapbox - Mapbox Terrain v2:如何修改等高线海拔范围?