Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字数计算程序不工作。C编程语言Ritchie&;克尼汉_C_Wc - Fatal编程技术网

字数计算程序不工作。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)
,但这并不意味着它是标准的,也不能保证你的代码是可移植的