计算换行符,空格和制表符

Bil*_*ill 2 c whitespace

这个问题来自K&R p.20:编写程序来计算空格,制表符和换行符.

这是我的尝试:

#include <stdio.h>

int main()
{
  int character, whitespace = 0;

  printf("Enter some text, and press Ctrl-d when you're done.\n\n");

  while((character = getchar() != EOF) {
    if(character == (' ' || '\n' || '\t')) {
      ++whitespace;
    }
  }

  printf("\nYour text contains %d spaces, tabs, and lines.\n", whitespace);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

该计划不起作用.无论用户文本包含多少空格,制表符和换行符,它总是给出答案0.有谁能看到这个问题?还有一件奇怪的事情:我必须按两次Ctrl-d才能注册.我不知道为什么.谢谢!

Jam*_*lis 18

if(character == (' ' || '\n' || '\t'))
Run Code Online (Sandbox Code Playgroud)

测试是否character等于结果(' ' || '\n' || '\t')(结果为1,表示结果||为真).您需要针对三个可能值中的每一个单独测试它,例如,

if(character == ' ' || character == '\n' || character == '\t')
Run Code Online (Sandbox Code Playgroud)