没有fopen()的读文件(C语言)

我正在开展一个学校项目,我们必须在保存在.txt文件中的表上执行一些操作(select,min,max)。 问题是我们不能使用常见的函数,如fopen,fscanf,fclose。

该程序将从命令行启动,如下所示: .\project.exe select parameters <table.txt

你有一些想法如何在不使用fopen的情况下将.txt文件的内容转换为stdin吗? 谢谢。

您无需打开文件 – 操作环境将为您执行此操作。

使用调用程序时,标准输入将切换为从该文件而不是键盘读取。 您可以使用scanf读取数据,而不必担心打开和关闭文件。

对于程序的输出和>table_out.txt重定向也是如此:不是打印到屏幕上,程序中的printf会写入文件,在程序退出时会自动关闭。 当然,如果您需要在重定向输出时将某些内容打印到屏幕上,可以通过打印到stderr来执行此操作(例如fprintf(stderr, "Invalid table format\n")

有很多方法可以实现这一点。

读STDIN

我想老师特别想要这种方法。 想法是阅读标准输入而不是特定文件。 在C ++中,您只需读取stdin对象即可。 这是一个例子:

 #include  #include  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] = '\0'; printf("This is your string: %s", str); return 0; } 

来源: http : //www.java2s.com/Code/C/Console/Usefgetstoreadstringfromstandardinput.htm

使用系统工具

你可以在Linux中调用“type”util @ Windows(不确定)或“cat”util作为子进程来读取一些partticular文件。 但这是一个“黑客”,所以我不建议使用这个。