Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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程序在代码::块13.12中执行不好_C - Fatal编程技术网

C程序在代码::块13.12中执行不好

C程序在代码::块13.12中执行不好,c,C,这是我的代码: #include <stdio.h> // count lines in input main() { int c, nl; nl = 0; while ((c = getchar()) != EOF) { if (c == '\n') ++nl; } printf("%d\n", nl); } #包括 //计算输入中的行数 main(){ INTC,nl; nl=0; 而((c=getchar())!=EOF){ 如果(

这是我的代码:

#include <stdio.h>

// count lines in input
main() {
  int c, nl;
  nl = 0;

  while ((c = getchar()) != EOF) {
    if (c == '\n')
      ++nl;
  }
  printf("%d\n", nl);
}
#包括
//计算输入中的行数
main(){
INTC,nl;
nl=0;
而((c=getchar())!=EOF){
如果(c=='\n')
++nl;
}
printf(“%d\n”,nl);
}

每当我构建并运行此程序时,它都会打开一个控制台窗口,当我按enter键时,它不会给出换行计数。

将满足特定条件时需要执行的所有代码放入代码块中,如:

if (c == '\n') {
   ++nl;
   printf("%d\n", nl);   
}

并将c定义为字符而不是整数。

要获得输出,需要按Ctrl+Z(对于DOS/Windows)或Ctrl+D(对于UNIX)传递
EOF


旁注:根据C标准定义的
main
的签名为

int main(void)   
int main(int argc, char *argv[])

我认为我们不能在intChange
main()
intmain(void)
中使用char。你结束循环了吗?您必须发送
EOF
来结束它。(Ctrl+D)或(MS Windows上的Ctrl+Z)。@obiNullPoièteèkenobi;对在这种情况下,我们可以将
char
存储在
int
中,用于
EOF
。正如Haccks告诉
main()
的那样,C90标准勉强容忍这种形式,但C99和C11标准不这样使用int
main(void)
instead,我认为他不想这样做。他想在循环的末尾打印行数,所以不管他写程序的方式有多糟糕,这都是正确的。尽管OP缩进了,但你的版本看起来与OP的尝试不匹配。OP的代码中缺少
{
/
}
(尽管令人困惑),这似乎是故意的。我使用了'-std=c99',编译器还允许使用:'int main()',尽管我在标准文档中没有看到这一点。我在Ubuntu14.04Linux和GCC4.8下使用gcc进行编译。2@user3629249; 我知道。您将无法在标准中找到该签名。在编译器文档中搜索。