【发布时间】:2020-09-20 23:04:21
【问题描述】:
我正在做一些事情,我需要在特定路径中创建多个文件,比如 10 个文件。我通过下面的代码实现了它
int index = 0;
char filename[6];
while(index < 10) {
sprintf(filename, "%s_%d", "data",index);
FILE *fp = fopen (filename, "w");
index++;
}
这里变量文件名用作文件名,但这会在放置我的代码的根目录中创建所有 10 个文件。我必须在不同的目录中创建文件,比如说桌面
FILE *fp = fopen ("Desktop\filename", "w");
这只会在桌面上创建一个文件,如果我用上面的 sn-p 循环,它会创建 10 个同名文件,实际上最后只有一个文件。
while(index < 10) {
sprintf(filename, "%s_%d", "data",index);
FILE *fp = fopen ("Desktop\filename", "w");
index++;
}
它创建了 10 个带有硬编码文件名的文件,即它没有使用我的文件名变量值。
如何实现这个以创建具有特定目录的多个文件?
【问题讨论】:
-
\f 是“换页”字符;要么转义你的转义符(\\f),要么切换到正确的路径分隔符(/)。
-
"data_0"对于char filename[6]来说太长了 - 零终止字符没有位置。更喜欢使用snprintf。也更容易写for (index = 0; index < 10; index++) { -
好的@KamilCuk 但实际问题不同如何将变量添加到我的目录路径?
-
@mevets 如果我在这种情况下使用像“Desktop\\filename”这样的变量值,它正在使用硬编码字符串创建文件,而不是我需要将变量附加到我的目录路径字符串
-
add a variable to my directory path ?就像您将字符串"data"添加到变量中一样。char superbigbuffer[2000]; snprintf(superbigbuffer, sizeof(superbigbuffer), "%s\\%s_%d", "the\\path\\to\\the\\file", "data", index)。或者真的只是因为路径和data是硬编码的,只需将其放在格式化字符串中即可。