在C语言中改变流

在C语言中改变流,c,C,我想知道如何更改我的程序当前流? 我的意思是我想从文件中获取输入。假设您讨论的是由文件*对象stdin和stdout表示的标准C i/O流,您可以使用: 假设您正在讨论由文件*对象stdin和stdout表示的标准C I/O流,您可以使用: 该函数用于更改已打开文件流的分配。它在C89标准C中-虽然链接到POSIX标准。该函数用于更改已打开文件流的分配。它在C89标准C中-虽然链接到POSIX标准。也许您有这样一个程序: #include <stdio> int main(int a

我想知道如何更改我的程序当前流?
我的意思是我想从文件中获取输入。

假设您讨论的是由文件*对象stdin和stdout表示的标准C i/O流,您可以使用:


假设您正在讨论由文件*对象stdin和stdout表示的标准C I/O流,您可以使用:


该函数用于更改已打开文件流的分配。它在C89标准C中-虽然链接到POSIX标准。

该函数用于更改已打开文件流的分配。它在C89标准C中-虽然链接到POSIX标准。

也许您有这样一个程序:

#include <stdio>
int main(int ac, char **av) {
    int i;
    if(scanf("%d", &i) == 1)
        printf("Answer: %d\n", i);
    else
        printf("No answer\n");
    return 0;
}
相反,请如此调用它

C:\> MYPROG.EXE < INPUTFILE.TXT

请注意,您已打开新的输入文件,并在后续调用中使用生成的句柄。还要注意,您必须使用稍微不同的调用来读取指定句柄,而不是
stdin
。例如,您必须使用
fscanf
而不是
scanf
getc
而不是
getchar
fgets
而不是
gets
也许您有这样一个程序:

#include <stdio>
int main(int ac, char **av) {
    int i;
    if(scanf("%d", &i) == 1)
        printf("Answer: %d\n", i);
    else
        printf("No answer\n");
    return 0;
}
相反,请如此调用它

C:\> MYPROG.EXE < INPUTFILE.TXT

请注意,您已打开新的输入文件,并在后续调用中使用生成的句柄。还要注意,您必须使用稍微不同的调用来读取指定句柄,而不是
stdin
。例如,您必须使用
fscanf
而不是
scanf
getc
而不是
getchar
,以及
fgets
而不是
gets

您所说的“stream'-stdio/out/err”是什么意思?或者其他什么?请提供更多关于您尝试做什么的详细信息。这个问题太模糊,无法回答,可能会被关闭。什么是“stream”-stdio/out/err?或者其他什么?请提供更多关于您尝试做什么的详细信息。这个问题太模糊,无法回答,很可能会被关闭。我同意你的想法,但我这样做了(为了将一个文件复制到另一个文件),但我什么也没遇到,不过我的朋友编写的程序和我的一样,而且运行得很好。@amin:编辑这个问题,以包含一些你尝试过但不起作用的代码,如果您希望得到帮助,找出它不工作的确切原因。
“rt”
模式“read turbo”?:-)我同意你的想法,但我这样做了(为了将一个文件复制到另一个文件),但我什么也没有面对,不过我的朋友写的程序和我的一样,而且运行得很好。@amin:如果你想帮我弄清楚为什么它不工作,请编辑这个问题,把你尝试过的一些代码包括进去。
“rt”
模式“read turbo”?:-)
#include <stdio>
int main(int ac, char **av) {
    FILE *input;
    int i;

    input = fopen("INPUTFILE.TXT", "r");
    if(!input) {
        printf("No input file\n");
        return 1;
    }
    if(fscanf(input, "%d", &i) == 1)
        printf("Answer: %d\n", i);
    else
        printf("No answer\n");
    return 0;
}