c - 保存来自一个程序的输入
问题描述
我有一个程序构想,它由两部分组成:
- 我想跟踪一个程序的输入并将输入保存到文件中
- 然后稍后将保存的输入反馈到程序中。(我已经完成了)
简单输入程序: 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
解决方案
执行程序时,默认会创建三个文件,例如
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;
}
希望以上回答对您有所帮助。
推荐阅读
- ruby - 循环遍历字符串会在 Ruby 中的字符之间添加空格
- visual-studio-code - VS 代码,运行 gulp 任务。不接受价值。有效值:“外壳”
- vb.net - 如何从数据库中删除数据
- c# - 自适应卡片未在 WebChat 中呈现
- html - 如何通过 ng-content 传递数据?
- android - 带有工具栏的 AppBarLayout 没有阴影/高度
- angular - 表单无效时测试按钮被禁用
- r - R:使用条件将垂直数据转换为水平格式
- asp.net - EntityFramework Core 加入后得到多个结果
- c# - 在 C# 中保存来自 Word 邮件合并的新文档结果