编译时读取文件

时间:2014-03-14 12:16:43

标签: c main

我正在制作一个节目,这是我无法理解的。我有一个带参数的主函数:

int main(int argc, const char *argv[]){
    FILE *file;
    file=fopen(argv[1], "r");

    if( file == NULL )
    {
      perror("Error while opening the file.\n");
      exit(EXIT_FAILURE);
    }

如何阅读argv[1]文件。当我编译它时,错误显示为无效参数。如何打开文件以便打印隐藏的内容?我正在使用代码块。

1 个答案:

答案 0 :(得分:3)

argv [1]引用用户在命令行上传递的第一个参数。 argv [0]指的是文件本身。所以在你的情况下,程序将打开作为第一个参数传递的文件。

./myprogram myfilename.txt

此外,你对程序本身有一些问题。

    #include <stdio.h>  /* Library needed for input/output*/    
    #include <stdlib.h> /* needed for the exit calls*/

    int main(int argc, const char *argv[]){
        FILE *file;
        file=fopen(argv[1], "r");

        if( file == NULL )
        {
            perror("Error while opening the file.\n");
            exit(1);
        }

        return 0;
        }

这显然现在没什么用,但它会让argv1打开。 另外,我将exit(EXIT_FAILURE)改为exit(1)。它们大多是同义词,但exit(1)不需要编译器标志(-std = c99)。 EXIT_FAILURE被认为更具可移植性 - EXIT_FAILURE vs exit(1)? - 但为了简单起见,我将其更改为退出(1)。