0

変更したいのですが:

f = fopen("/home/file.txt", "w");

結果は次のとおりです。

f = fopen("/home/%s.txt", "w",argv[1]);

fopenのオプションについて考えていますか?

ありがとうございました。

4

3 に答える 3

4

私はこれを提案します:

char filename[MAX_PATH];
snprintf(filename, sizeof(filename), "/home/%s.txt", argv[1]);
f = fopen(filename, "w");

上記の操作でラッパーを作成することはできますが、の変更はfopen簡単な作業ではありません。

于 2012-10-15T10:56:51.340 に答える
3

fopen呼び出しを関数でラップするだけです。

FILE* my_fopen(char filename[]) {
    static char buffer[MAXIMUM_SIZE];
    snprintf(buffer, MAXIMUM_SIZE, "/home/%s.txt", filename);
    return fopen(buffer, "w");
}

次に、あなたがしなければならないのは、を呼び出すことだけですmy_fopen("myfile.txt")

于 2012-10-15T11:04:50.090 に答える
0

fopen()フォーマット文字列を受け取らないので、事前に作成する必要があります。

char buf[MAX_PATH];
snprintf(buf, sizeof(buf), "/home/%s.txt", argv[1]);
FILE *f = fopen(buf, "w");
于 2012-10-15T10:57:14.443 に答える