簡體   English   中英

使用命令行輸出到文件

[英]output to a file using 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. 如果要寫入文件,請在打開文件時將“ w”用於寫入模式,而不是“ r”用於讀取模式。
  2. 您將文件名聲明為單個字符,而不是指向字符串的指針(字符*)。 使其成為指針將允許文件名的長度> 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM