【问题标题】:C Create File and Folder Specified By UserC 创建用户指定的文件和文件夹
【发布时间】:2016-09-08 18:11:00
【问题描述】:

如何在用户指定的文件夹中创建文件夹和文件?

这是我的功能的一部分:

char* folder = *(argv + 2); //"C:\\Users\\User\\Desktop\\New folder";
if (!(log = fopen("folder\\file.txt", "a")))// checking if there is any problem with the file
    {
        printf("The log file has not created correctly, closing the program\n");
        system("PAUSE");
        exit(1);
    } 

【问题讨论】:

  • 您可以将字符串变量传递给文件操作。在字符串中构建路径和文件名,然后将其传递给文件调用。
  • @johnelemans OP 在 C 中,所以没有“字符串”
  • @ariel20 用户如何将目录传递给您?是char*吗?
  • 我编辑了问题,用户将其作为参数输入到 main

标签: c file directory


【解决方案1】:

要么我不明白你的问题,要么它太简单了。让我们假设它太简单了。然后你可以这样做:

char filename[1024];
FILE *logfp;
sprintf(filename, "%s\\file.txt", argv[2]);
if ((logfp=fopen(filename,"w")==NULL) {
    //...error etc.

注意:这里假设路径中的所有目录都存在。

【讨论】:

  • 在处理用户输入时,您应该真的使用snprintf()!
【解决方案2】:

不确定如何将参数传递给命令。这假定用户只输入一个参数,即要创建的文件的路径。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc,char* argv[])
{
        char string[100]={'\0'};
        FILE* fp;
        if(argc==2)
          snprintf(string,(size_t)100,"%s\\filename",argv[1]);
        else{
          printf("Usage : .\\executable_name \"path\"");
          exit(-1);
        }
        fp=fopen(string,"a"); # Opening file in append mode.
        if (fp==NULL){
                printf("Can't create file");
                exit(-1);
        }
        else{
                fprintf(fp,"%s","teststring\n");
        }
        fclose(fp);
        return 0;
}

运行这个:

.\executable_name "C:\Users\SomeUser"

【讨论】:

  • 在处理用户输入时,您应该真的使用snprintf()!
  • @alk:合并:D。顺便说一句,我仍然想知道 Windows 中文件夹深度的合理字符限制是多少?
  • 一般来说,我会在 Windows 上选择MAX_PATH,在 UNIX 上(尝试)选择PATH_MAX,但是后者在尝试保持便携性时会变得复杂,因为不同的性质IX'ish 操作系统。您可能想阅读此stackoverflow.com/q/833291/694576 为什么的答案。还请注意最大路径长度和文件名最大长度之间的细微差别。
猜你喜欢
  • 2017-05-29
  • 2021-01-13
  • 1970-01-01
  • 2015-06-07
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多