使用命令行输出到文件

时间:2013-02-16 20:33:41

标签: c file-io command-line

我正在编写一个能够获取命令行参数的程序。 基本上,用户必须能够在调用程序时通过命令提示符指定文件名。即程序应该能够接受如下参数: doCalculation -myOutputfile.txt。 doCalculation是我的程序的名称,myOutputfile是我希望我的结果写入的文件(即将我的计算结果输出到指定的文件名)。

到目前为止,我可以通过命令提示符调用我的函数。我不知道如何让我的程序写入指定的文件名(或者如果它已经不存在则创建该文件)。

我的代码如下:

int main(int argc, char *argv[])
{
    FILE* outputFile;
    char filename;

    // this is to make sure the code works
    int i = 0;
    for (i = 0; i < argc; i++) {
        printf("argv[%d] = %s\n", i, argv[i]);
    }

    //open the specified file
    filename= argv[i];   
    outputFile = fopen("filename", "r");

    //write to file
    fclose(outputFile);
}

1 个答案:

答案 0 :(得分:0)

所以我注意到了几件事......

  1. 如果要写入文件,打开文件时使用“w”表示写入模式,而不是“r”表示读取模式。
  2. 您将文件名声明为单个字符,而不是指向字符串的指针(char *)。使其成为指针将允许长度> gt的文件名。 1(字符数组而不是单个字符)。
  3. 正如Ashwin Mukhija所说,你在for循环之后使用i将它设置为2,而实际上你想要第二个(索引1)参数。
  4. 你在open()函数中有文件名参数作为文字“文件名”,而不是你的文件名变量。
  5. 看看这段代码是否有助于解决您的问题,(我还在那里扔了一个fprintf()来向您展示如何写入文件)。 干杯!

    int main(int argc, char *argv[])
    {
        FILE* outputFile;
        char* filename;
    
        // this is to make sure the code works
        int i = 0;
        for (i = 0; i < argc; i++) {
            printf("argv[%d] = %s\n", i, argv[i]);
        }
    
        //saftey check
        if(argv[1])
        {
            filename = argv[1];
    
            //open the specified file
            outputFile = fopen(filename, "w");
    
            fprintf(outputFile, "blah blah");
    
            //write to file
            fclose(outputFile );
        }
    
        return 0;
    }