字数计算程序不工作。C编程语言Ritchie&;克尼汉
这是单词计数程序的代码示例。但它不起作用。当我们执行它时,在输入单词之后,它应该显示结果,但是它没有产生任何东西。这个代码中缺少了什么字数计算程序不工作。C编程语言Ritchie&;克尼汉,c,wc,C,Wc,这是单词计数程序的代码示例。但它不起作用。当我们执行它时,在输入单词之后,它应该显示结果,但是它没有产生任何东西。这个代码中缺少了什么 #include<stdio.h> #define IN 1 /* inside a word */ #define OUT 0 /* outside a word */ /* counts lines, words, and characters in input */ main() { int c, nl, nw, nc, st
#include<stdio.h>
#define IN 1 /* inside a word */
#define OUT 0 /* outside a word */
/* counts 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);
}
#包括
#在1/*中定义一个单词*/
#在单词外定义0/**/
/*对输入中的行、字和字符进行计数*/
main()
{
北卡罗来纳州、北卡罗来纳州、北卡罗来纳州、北卡罗来纳州;
状态=输出;
nl=nw=nc=0;
而((c=getchar())!=EOF){
++数控;
如果(c=='\n')
++nl;
如果(c=''| | c='\n'| | c='\t')
状态=输出;
else if(state==OUT){
状态=IN;
++西北;
}
}
printf(“%d%d%d\n”,nl,nw,nc);
}
您的代码很好。您必须自问如何在while循环持续读取输入时中断while循环,即如何向程序发送EOF
在*nix系统上,按CTRL+D键,在Windows上按CTRL+Z键生成EOF
另外:为
main()
使用一个标准签名,例如intmain(void)
,但它不起作用。请详细说明。您在这里不是新手,是吗?为了以防万一,你错过了,让我再次谦恭地指给你看,并通过阅读了解我们对这里的问题的期望。谢谢你的回答。现在很好用。我一直使用main(),因为那是那本书中的代码。使用main()
完全可以,如果你愿意,你可以把它称为int main(float a)
。@malina:不,它不是main()
追溯到函数默认为int
时缺少返回类型的日子,这不再是保证。该标准还规定了main
的两个(而且只有两个)有效定义:int main(void)
和int main(int argc,char*argv[])
(C99:5.1.2.2.1程序启动)@Malina:是的,请检查标准:“程序启动时调用的函数名为main。实现没有声明此函数的原型。应使用返回类型int进行定义,且不带任何参数:int-main(void)
或两个参数(此处称为argc和argv,但可以使用任何名称,因为它们是声明它们的函数的本地名称):int-main(int-argc,char*argv[])
或等效名称;10) @Malina:检查最后一条注释:“implementation defined”表示不能保证您的代码可以由另一个符合标准的编译器正确编译。根据标准,编译器可以接受float main(struct some_struct*foo)
,但这并不意味着它是标准的,也不能保证你的代码是可移植的