0

我正在编写一个应该能够采用命令行参数的程序。基本上,用户必须能够在调用程序时通过命令提示符指定文件名。即程序应该能够接受一个参数,如: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);
}
4

1 回答 1

0

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

  1. 如果要写入文件,请在打开文件时使用“w”表示写入模式,而不是“r”表示读取模式。
  2. 您将文件名声明为单个字符,而不是指向字符串 (char *) 的指针。将其设为指针将允许长度 > 1 的文件名(字符数组而不是单个字符)。
  3. 正如 Ashwin Mukhija 所提到的,您在 for 循环将其设置为 2 之后使用 i ,而实际上您需要第二个(索引 1)参数。
  4. 您将 open() 函数中的文件名参数作为文字“文件名”而不是文件名变量。

看看这段代码是否有助于解决你的问题,(我还在其中扔了一个 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;
}
于 2013-02-16T21:01:25.207 回答