【问题标题】:Multiple files creation in C with specific path在 C 中创建具有特定路径的多个文件
【发布时间】: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 &lt; 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 是硬编码的,只需将其放在格式化字符串中即可。

标签: c loops file


【解决方案1】:

如何实现这个以创建具有特定目录的多个文件?

只需将您的目录路径添加到变量中即可。

 char filename[2000];
 for (int i = 0; i < 10; ++i) {
      snprintf(filename, sizeof(filename), "Desktop\\filename\\data_%d", i);
      FILE *f = fopen(filename, "w");
      if (f != NULL) {
         fclose(f);
      }
 }

【讨论】:

    猜你喜欢
    • 2019-12-28
    • 2020-04-30
    • 1970-01-01
    • 2021-07-06
    • 2020-08-10
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多