不使用fopen()读取文件(C语言)



我正在做一个学校项目,在这个项目中,我们必须对保存在.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作为子进程来读取某些特定文件。但这是一个相当"黑客",所以我不建议使用这个。

最新更新