为什么这个基本的C示例不起作用?

时间:2014-05-13 04:31:44

标签: c

这是C编程语言的基本示例。我正在使用Ubuntu,使用gcc进行编译,预先打包,它不会出现任何错误或任何错误,但是当我点击输入时它应该打印一个字数等等。(我甚至无法得到更简单的字符数工作)。我尝试改变一些代码,这确实产生了错误,并尝试将最终的print语句放在if (getchar()==EOF) {printf(...)}类的东西中,但这没有做任何事情。

#include <stdio.h> 

#define IN 1 /* inside a word */ 
#define OUT 0 /* outside a word */ 

/* count lines, words, and characters in input */ 
main() 
{ 
int c, nl, nw, nc, state; 

state = OUT; 
nl = nw = nc = 0;

while ((c = getchar()) != EOF) 
 { 
  ++nc; 
  if (c == '\n') 
    ++nl; 
  if (c == ' ' || c == '\n' || c == '\t') 
    state = OUT; 
  else if (state == OUT) { 
    state = IN; 
    ++nw; 
    } 
 } 
printf("%d %d %d\n", nl, nw, nc); 
} 

2 个答案:

答案 0 :(得分:3)

Ubuntu中的

EOF ctrl + D 然后输入。在Windows中,它是 ctrl + Z 然后输入,因此在输入字符串后,使用EOF来终止while循环你将根据你的计划机构得到答案。

答案 1 :(得分:-1)

更改了行:

main()

为:

int main()

并改变了这个:

printf("%d %d %d\n", nl, nw, nc);
} 

对此:

printf("%d %d %d\n", nl, nw, nc);
return(0);
} 

编译:

gcc -Wall -o test test.c

创建一个名为&#34; junk.txt&#34;的文件。内容为: adddsadsd 33334343434243

然后执行程序:

> ./test < junk.txt
0 2 25

它似乎像宣传的那样有效。