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 回答