首页 > 解决方案 > 保存来自一个程序的输入

问题描述

我有一个程序构想,它由两部分组成:

  1. 我想跟踪一个程序的输入并将输入保存到文件中
  2. 然后稍后将保存的输入反馈到程序中。(我已经完成了)

简单输入程序: testProgram.c

  1 #include <stdio.h>
  2 int main() {
  3   char str[100];
  4   int i;
  5 
  6   printf("Enter a value : ");
  7   scanf("%s %d", str, &i);
  8 
  9   printf("\nYou entered: %s %d\n", str, i);
 10   
 11   return 0;
 12 }                           

如何将输入从一个程序保存到文件(或程序)?

编辑对不起我的问题很不清楚。我现在看到了如何以不同的方式感知它。我应该更清楚我在问什么。

大卫对我的问题的总结:“我如何接受用户输入,然后在我的程序开始时将问题和答案写入一个文件,以便稍后我可以从文件中读回我的程序?””是正确的,除了我不在乎保留问题,只保留答案(即输入)。我也希望它是通用的,并且不改变我想从 接收输入的程序。这意味着我可以获取用户的输入进入任何程序,无需更改任何代码

理想行为hello如果我用输入和 运行上述程序1,终端应该产生:

Enter a value : hello 
1

You entered: hello 1

这些输入应该记录在前一个程序的输入(我知道很混乱)的输出文件中。这个文件看起来像:

hello
3

标签: cioio-redirection

解决方案


执行程序时,默认会创建三个文件,例如

standard_input [file descriptor = 0 && File pointer = stdin]
standard_output [file descriptor = 1 && File pointer = stdout]
standard_error [file descriptor = 2 && File pointer = stderr]

完成第一步:在从用户那里获取输入之前刷新标准输入文件中的内容。

在退出程序之前,将文件指针移动到初始位置,并将标准输入文件的所有内容复制到“input.txt”中。

第二步: 稍后要将输入从“input.txt”提供给程序,您可以使用该函数更改程序的默认文件描述符和文件指针freopen()

假设文件“intput.txt”文件包含输入。

freopen("input.txt","r",stdin);

现在stdin被指向“ input.txt ” 默认情况下,scanf 将从 stdin 指向的文件中读取。

试试下面的程序:

#include <stdio.h>

int main() {
    char str[100];
    int i;
    printf("Enter a value : ");
    freopen("input.txt", "r",stdin);
    scanf("%s %d", str, &i);
    printf("\nYou entered: %s %d\n", str, i);
    return 0; 
}

希望以上回答对您有所帮助。


推荐阅读