How to use redirection in C for file input

2019-01-24 05:06发布

问题:

I need to get the file from the terminal, I know the command will look like:

./a.out < fileName.txt

I'm not sure how to use fgets() in my program to use the file requested from the terminal.

回答1:

Using redirection sends the contents of the input file to stdin, so you need to read from stdin inside your code, so something like (error checking omitted for clarity)

#include <stdio.h>

#define BUFFERSIZE 100

int main (int argc, char *argv[])
{
    char buffer[BUFFERSIZE];
    fgets(buffer, BUFFERSIZE , stdin);
    printf("Read: %s", buffer);
    return 0;
}


回答2:

1.) you close stdin then assign a different file handler to it 2.) replace stdin with any other file handler using dup2 function you can achieve it



回答3:

You dont use fgets, you use gets

The redirection means just that, your terminal input will be the file contents. But your program does not know where it comes from, because it is done by the OS.