使用stdin

时间:2014-10-25 09:53:08

标签: c console stdin

所以我必须实现一个与文本文件( .txt )一起使用的程序,它已经被放到stdin那样:./program [argumets] <textfile.txt而不使用fopen,fscanf这样的函数,malloc等,我不知道该怎么做。我需要处理该文本文件中的字符(将它们打印到屏幕,打印最大/最小值,打印总和等),而不是文件本身,所以,也许有人有提示?谢谢。

1 个答案:

答案 0 :(得分:0)

从这样的文本文件读取几乎与从键盘读取相同。这么多,以至于没有做一些特殊的技巧,你的程序无法知道输入是来自keyboarad还是来自文件。

当您确实需要使用需要文件的函数时,有stdin,即所谓的“文件指针”,其类型为FILE*,与{{1}返回的相同}。像[{1}}这样的函数接受文件指针(但你可以调用fopen然后)和fscanf(做 NOT 使用scanf,这是致命的破碎,最后从C11标准中删除。)

如果你需要使用带有文件描述符的函数,它是整数,并且例如通过fgets调用返回,并被gets等函数接受,那么标准输入的文件描述符号是0,但通常应使用open常量。并且,不要混合来自文件描述符(无缓冲)的读取,以及从read(缓冲)读取,因为缓冲会弄乱您获得的数据。对大多数应用程序而言,使用STDIN_FILENO可能更好。

为了使这个更具体,你可以开发你的程序,而不是使用FILE*来重定向输入文件,你可以在编辑器中打开输入文件,将其复制到剪贴板,在一个文件中运行你的应用程序终端,并将输入文件作为文本粘贴到终端。