我正在开展一个学校项目,我们必须在保存在.txt文件中的表上执行一些操作(select,min,max)。 问题是我们不能使用常见的函数,如fopen,fscanf,fclose。
该程序将从命令行启动,如下所示:.\project.exe select parameters <table.txt
您是否有一些想法如何在不使用fopen的情况下将.txt文件的内容转换为stdin? 感谢。
答案 0 :(得分:6)
您无需打开文件 - 操作环境将为您执行此操作。
使用<table.txt
调用程序时,标准输入将切换为从该文件而不是键盘读取。您可以使用scanf
来读取数据,而不必担心打开和关闭文件。
同样适用于您的程序输出和>table_out.txt
重定向:而不是打印到屏幕上,程序中的printf
将写入文件,该文件将自动关闭节目的退出。当然,如果您需要在重定向输出时将某些内容打印到屏幕上,可以打印到stderr
(例如fprintf(stderr, "Invalid table format\n")
)。
答案 1 :(得分:0)
实现这一目标的方法很少。
我想老师特别想要这种方法。想法是阅读标准输入而不是特定文件。 在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] = '\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文件的子进程。但这是一个“黑客”,所以我不建议使用这个。