如何在C语言mkdir函数中使用变量指定创建的目录名称?
问题解决:根据用户输入创建对应目录
你的代码核心问题在于mkdir的路径参数——你写的是固定字符串"C:\\Users\\DAVUTBOZTAŞ\\Desktop\\filename",这里的filename是字符串字面量,不是你定义的变量,所以不管用户输入什么内容,都会在桌面创建一个名为filename的固定目录。
要实现根据用户输入创建对应目录,需要把路径前缀和用户输入的文件名拼接成完整路径,再传给mkdir。推荐用snprintf(比sprintf更安全,可避免缓冲区溢出)完成拼接:
#include <stdio.h> #include <direct.h> // Windows系统下的mkdir头文件,Linux/Unix请用<sys/stat.h> int main() { char filename[255]; char full_path[512]; // 定义足够大的缓冲区存储完整路径 printf("Enter your file name: "); scanf("%s", filename); // 拼接完整路径:固定前缀 + 用户输入的文件名 snprintf(full_path, sizeof(full_path), "C:\\Users\\DAVUTBOZTAŞ\\Desktop\\%s", filename); // 调用mkdir创建目录 mkdir(full_path, 0777); return 0; }
关键说明:
- 必须保证
full_path的缓冲区大小足够容纳前缀路径+用户输入的文件名,防止缓冲区溢出 - 不同操作系统的
mkdir依赖头文件不同,Windows用<direct.h>,Linux/Unix用<sys/stat.h> 0777是权限掩码,实际创建的目录权限会受系统默认umask影响
内容的提问来源于stack exchange,提问作者Davut Boztaş
相关产品推荐
相关产品推荐

