在C程序中使用.txt接收输入
我甚至不确定该如何开始,但本质上,我希望使用.txt来接收和存储输入,而不是使用用户输入来运行我的程序 因此,例如.txt文件如下所示: 1 2 3 5 6 8910在C程序中使用.txt接收输入,c,input,C,Input,我甚至不确定该如何开始,但本质上,我希望使用.txt来接收和存储输入,而不是使用用户输入来运行我的程序 因此,例如.txt文件如下所示: 1 2 3 5 6 8910 如何打开此.txt文件并将每个数字作为变量存储在程序中?要使用文本作为基于终端的程序的输入,请在终端中键入以下内容: programExecutable < textInput.txt 其中programExecutable是您编译的程序,textInput.txt是您要用作输入的文件。看起来您需要类似配置文件的文件。这是
如何打开此.txt文件并将每个数字作为变量存储在程序中?要使用文本作为基于终端的程序的输入,请在终端中键入以下内容:
programExecutable < textInput.txt
其中programExecutable是您编译的程序,textInput.txt是您要用作输入的文件。看起来您需要类似配置文件的文件。这是一个简单的例子
所有这些都假设您提供的示例输入。调整到不同的输入排列是留给读者的练习 这是最简单的程序,假设您使用:./myprogram
#include <stdio.h>
int main ( void ) {
int a, b, c, d, e, f, g, h; /* terrible variable names */
scanf("%d %d %d", &a, &b, &c);
scanf("%d %d", &d, &e);
scanf("%d %d %d", &f, &g, &h);
return 0;
}
注意这些变化。使之更好的下一步是从命令行获取文件名
int main ( int argc, char * argv[] ) {
FILE * fp;
int a, b, c, d, e, f, g, h; /* terrible variable names */
char * filename;
if (argc > 1) filename = argv[1];
else {
fprintf(stderr, "please supply an input filename on the command line\n");
return 2;
}
fp = fopen(filename, "r");
/* and then continues as in the version above... */
}
再次注意更改。在C中,可以使用文件句柄并将读取的数据存储到数组中来完成此操作。所以你会有如下的东西
#include <stdio.h>
#define MAX_NUMBER 100
int main()
{
FILE *inputFile;
inputFile = fopen("yourDataFile.txt", "r");
int input[MAX_NUMBER];
int i = 0;
while (!feof(inputFile) && i<MAX_NUMBER) {
fscanf(inputFile, "%d", input[i]);
i++;
}
fclose(inputFile);
}
这里是指向更多文档的链接:…是否使用文件IO功能?或者,如果您已经从stdin读取数据,则可以在运行程序时重定向文件。一本书或在线教程可能是一个更好的开始。然后你可以问更具体的问题。fopen,fread/fscanf,诸如此类blah@AlexG,找到回答问题的答案后,应单击该帖子旁边的复选标记。@Alex G-系统调用(如读取、打开、写入、关闭、lseek)提供了一种处理文件的简单方法。但当然,您必须了解文件i/o才能执行您想要执行的操作。您可能希望为输入指定一个大小,然后确保读取的值不会超过该大小……硬编码FSCANF以完全匹配输入文件不是很好的移植性。考虑使用一个while循环,如我的答案中所例示的那样,这将是另一个改进——试图在婴儿步骤中做到这一点。此外,其他数据输入安排可能不适合循环输入范式。
#include <stdio.h>
#define MAX_NUMBER 100
int main()
{
FILE *inputFile;
inputFile = fopen("yourDataFile.txt", "r");
int input[MAX_NUMBER];
int i = 0;
while (!feof(inputFile) && i<MAX_NUMBER) {
fscanf(inputFile, "%d", input[i]);
i++;
}
fclose(inputFile);
}