我只有Java经验,并且我开始通过K& R C书开始学习C,第二个补充。在第一章中,他们的一个例子是这个程序,它只计算空格,字符和数字:
#include <stdio.h>
main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for(i = 0; i < 10; i++){
ndigit[i] = 0;
}
while((c = getchar()) != EOF){
if(c >= '0' && c <= '9'){
++ndigit[c-'0'];
}
else if (c == ' ' || c == '\n' || c == '\t'){
++nwhite;
}
else{
++nother;
}
}
printf("digits =");
for(i = 0; i <10; ++i){
printf(" %d", ndigit[i]);
}
printf(", white space = %d, other = %d\n", nwhite, nother);
}
接下来,在他们所说的书中,这个程序的输出本身就是&#34;然后输出。但是,我已经在终端中编译了程序,并且无法弄清楚如何在C中运行该程序。在java中,我会将文件名传递给String args [0]并从那里读取它,但是这个程序没有任何类似的机制,似乎没有一个args数组可以传递给它。即使它确实如此,代码本身似乎也没有从任何特定文件中读取(例如,在java中你可以专门设置一个扫描程序来读取args [0],然后调用scanner.next()etcetc,但在这个程序中,它只是调用getchar()看似没什么。任何人都可以帮我清除这一点,以便我可以在继续之前运行该程序吗?对不起,如果这是超级简单的事情,就像我说我的C经验是不存在的。谢谢!
我在这个网站上的格式也是垃圾我道歉
答案 0 :(得分:4)
我认为他们打算像这样运行这个程序:
./example < example.c
关于程序不打开文件而且不使用参数的事实,你是对的。 getchar()函数在stdin上运行。 如果你在编译文件中使用它,程序没有多大意义,所以我认为它应该与源文件一起运行。我看到说明令人困惑。