如何从命令行定义文件名并将其传递给fopen()?

bqu*_*i56 5 c

我有以下程序将用户的输入写入文件.目前要写入的文件是预定义的; 但是,我想让用户从命令提示符定义文件名.添加此功能的最佳方法是什么?我无法理解如何将用户输入的字符串作为fopen()函数中的参数.我应该使用scanf()还是创建另一个getchar(),同时循环将chars存储在一个数组中,然后创建一个变量作为fopen()的参数或什么?

#include <stdio.h>

int main()
{
    char c;
    FILE *fp;

    fp = fopen("file.txt", "w");

    while ((c = getchar()) != EOF)
    {
        putc(c, fp);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

wal*_*lyk 8

这就是主要的论点:

#include <stdio.h>

int main(int argc, char **argv)
{
    char c;
    FILE *fp;

    if (argc >= 2)
         fp = fopen(argv[1], "w");
    else fp = fopen("file.txt", "w");

    while ((c = getchar()) != EOF)
    {
        putc(c, fp);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果你遵循这个,你可能想知道是什么argv[0].这就是程序名称的位置.某些操作系统环境将可执行文件的完整路径放在那里.其他人只放了程序名.其他人仍然把打字输入.

对于命令 ../../bin/someprogram

在Windows上,argv[0]"C:\\Documents and Settings\\User\bin\\someprogram.exe"
在Linux/bash的, argv[0]../../bin/someprogram
对的Ultrix/CSH,(我认为)argv[0]/home/username/bin/someprogram