你如何在C中运行文件读取程序?

时间:2017-05-14 22:11:28

标签: c

我只有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经验是不存在的。谢谢!

我在这个网站上的格式也是垃圾我道歉

1 个答案:

答案 0 :(得分:4)

我认为他们打算像这样运行这个程序:

./example < example.c

关于程序不打开文件而且不使用参数的事实,你是对的。 getchar()函数在stdin上运行。 如果你在编译文件中使用它,程序没有多大意义,所以我认为它应该与源文件一起运行。我看到说明令人困惑。