m0_72027734 2022-12-11 19:37 采纳率: 83.3%
浏览 19
已结题

在linux系统中,通过<符号进行文件输入重定向,向指定程序中输入文件内容,然后尝试打印

问题遇到的现象和发生背景

需要在linux的终端控制程序读取文件并输出所读取的文件内容,具体情况如下,使用makefile文件make一个可以运行的test.exe程序,然后再在终端通过./test < data.txt (这里的data.txt就是我需要输出的数据内容),将data.txt文件数据传入test.exe中然后运行,要求在屏幕上打印出data.txt的文件数据内容在终端上面。

遇到的现象和发生背景,请写出第一个错误信息

问题是无法获取到data.txt中的数据内容,不知道怎么样才能把文件名读取到程序中去或者直接将文件的数据内容读取到c程序里面。

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

在linux的终端上的操作:

./test < data.txt

data.txt的文件内容

123132
121313
852666
663232

test程序部分的代码因为不知道怎么引入文件所以没有这一部分。

运行结果及详细报错内容

无报错

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

尝试用命令行参数argv来获取文件的名字但是事实证明,这个文件的重定向跟argv一点关系都没有。

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

我想要实现能够在Linux系统上,通过./test.exe < data.txt 的命令来将data.txt中的文件数据传输进test.exe程序然后在Linux终端上打印出来。

  • 写回答

1条回答 默认 最新

  • m0_57781768 2022-12-11 19:54
    关注

    首先,你需要编写一个程序来读取文件内容,并把文件内容打印到屏幕上。这个程序可以使用C或C++编写,例如:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char* argv[]) {
      // 检查命令行参数
      if (argc != 2) {
        printf("Usage: %s <filename>\n", argv[0]);
        return 1;
      }
    
      // 打开文件
      FILE* file = fopen(argv[1], "r");
      if (file == NULL) {
        printf("Cannot open file: %s\n", argv[1]);
        return 1;
      }
    
      // 读取文件内容
      char c;
      while ((c = fgetc(file)) != EOF) {
        putchar(c);
      }
    
      // 关闭文件
      fclose(file);
      return 0;
    }
    

    然后,你可以创建一个Makefile文件来编译这个程序,例如:

    test: test.c
      gcc -o test test.c
    

    这个Makefile文件包含一个目标test,它依赖于test.c文件。当你运行make命令时,它会使用gcc命令编译test.c文件,生成一个可执行文件test

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 创建了问题 12月11日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?