在C程序中使用.txt接收输入

在C程序中使用.txt接收输入,c,input,C,Input,我甚至不确定该如何开始,但本质上,我希望使用.txt来接收和存储输入,而不是使用用户输入来运行我的程序 因此,例如.txt文件如下所示: 1 2 3 5 6 8910 如何打开此.txt文件并将每个数字作为变量存储在程序中?要使用文本作为基于终端的程序的输入,请在终端中键入以下内容: programExecutable < textInput.txt 其中programExecutable是您编译的程序,textInput.txt是您要用作输入的文件。看起来您需要类似配置文件的文件。这是

我甚至不确定该如何开始,但本质上,我希望使用.txt来接收和存储输入,而不是使用用户输入来运行我的程序

因此,例如.txt文件如下所示: 1 2 3 5 6 8910


如何打开此.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);
}