所以我必须实现一个与文本文件( .txt )一起使用的程序,它已经被放到stdin那样:./program [argumets] <textfile.txt
而不使用fopen,fscanf这样的函数,malloc等,我不知道该怎么做。我需要处理该文本文件中的字符(将它们打印到屏幕,打印最大/最小值,打印总和等),而不是文件本身,所以,也许有人有提示?谢谢。
答案 0 :(得分:0)
从这样的文本文件读取几乎与从键盘读取相同。这么多,以至于没有做一些特殊的技巧,你的程序无法知道输入是来自keyboarad还是来自文件。
当您确实需要使用需要文件的函数时,有stdin
,即所谓的“文件指针”,其类型为FILE*
,与{{1}返回的相同}。像[{1}}这样的函数接受文件指针(但你可以调用fopen
然后)和fscanf
(做 NOT 使用scanf
,这是致命的破碎,最后从C11标准中删除。)
如果你需要使用带有文件描述符的函数,它是整数,并且例如通过fgets
调用返回,并被gets
等函数接受,那么标准输入的文件描述符号是0,但通常应使用open
常量。并且,不要混合来自文件描述符(无缓冲)的读取,以及从read
(缓冲)读取,因为缓冲会弄乱您获得的数据。对大多数应用程序而言,使用STDIN_FILENO
可能更好。
为了使这个更具体,你可以开发你的程序,而不是使用FILE*
来重定向输入文件,你可以在编辑器中打开输入文件,将其复制到剪贴板,在一个文件中运行你的应用程序终端,并将输入文件作为文本粘贴到终端。