我正在做一个学校项目,在这个项目中,我们必须对保存在.txt文件中的表进行一些操作(select、min、max)。问题是我们不能使用常见的函数,如fopen、fscanf、fclose。
程序将从命令行启动,如下所示:.project.exe select parameters <table.txt
您对如何在不使用fopen的情况下将.txt文件的内容获取到stdin有一些想法吗?谢谢
您不需要打开文件,操作环境会帮您打开。
当使用<table.txt
调用程序时,您的标准输入将切换为从该文件读取,而不是从键盘读取。您可以使用scanf
读取数据,并且不必担心打开和关闭文件。
程序的输出和>table_out.txt
重定向也是如此:程序中的printf
将写入一个文件,该文件将在程序退出时自动关闭,而不是打印到屏幕。当然,如果您需要在输出重定向时将某些内容打印到屏幕上,您可以通过打印到stderr
(例如fprintf(stderr, "Invalid table formatn")
.
有几种方法可以实现这一点。
阅读STDIN
我想老师特别想要这种方法。这个想法是读取标准输入,而不是特定的文件。在C++中,您可以简单地读取stdin对象。这里有一个例子:
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[80];
int i;
printf("Enter a string: ");
fgets(str, 10, stdin);
/* remove newline, if present */
i = strlen(str)-1;
if( str[ i ] == 'n')
str[i] = ' ';
printf("This is your string: %s", str);
return 0;
}
来源:http://www.java2s.com/Code/C/Console/Usefgetstoreadstringfromstandardinput.htm
使用系统实用程序
您可以在Linux中调用"type"util@Windows(不确定)或"cat"util作为子进程来读取某些特定文件。但这是一个相当"黑客",所以我不建议使用这个。