c - 保存一个程序的输入

标签 c io io-redirection

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

  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 }                           

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

编辑抱歉,我的问题很不清楚。我现在明白了如何以不同的方式来理解它。我应该更清楚地表达我的要求。

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

理想行为 如果我使用输入 hello1 运行上述程序,终端应该生成:

Enter a value : hello 
1

You entered: hello 1

这些输入应该记录在前一个程序的输入的outputFile中(我知道这很令人困惑)。该文件如下所示:

hello
3

最佳答案

当您执行该程序时,默认情况下将创建三个文件,例如

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; 
}

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

关于c - 保存一个程序的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57567269/

相关文章:

c - 如何删除此代码中的段错误

c - 将 char 转换为整数并返回值的函数 [C]

java - 针对 IO BufferInputStream 的 Nio 字节缓冲区(按 channel )

linux - 了解 bash 中的 exec

python - 在 sys.stdin.read() 和子进程调用 vim 之后如何不弄乱终端?

从西里尔字母转换为拉丁字母 C

c - 我没有得到以下 C 语言的头文件

string - haskell 问题 : io string -> [int]

java - 文件的输入/输出

windows - 如何回显以数字结尾的字符串?