gpt4 book ai didi

c - c中修改权​​限制作文件夹锁软件

转载 作者:太空宇宙 更新时间:2023-11-04 07:31:30 24 4
gpt4 key购买 nike

我正在创建一个更改文件夹权限的 c 可执行文件。

#include<stdio.h>
#include<dos.h>
main()
{
system("cacls foldername /e /p everyone:n");
}

它会生成一个应该存在于文件夹所在位置的文件,我们必须在编译时添加文件夹名称。但是当我这样做的时候

char foldername[15];
printf("Enter the foldername");
scanf("%s",foldername);
system("cacls %s /e /p everyone:n");

然后它不起作用....!请帮我解决这个问题!!

最佳答案

您对 system() 的调用根本没有使用 foldername。您需要创建命令字符串,然后调用 system():

char foldername[15];
printf("Enter the foldername");
scanf("%s", foldername);

char command[100];
sprintf(command, "cacls %s /e /p everyone:n", foldername);
system(command);

当然,此代码容易受到缓冲区溢出的影响:如果用户在其文件夹名称中输入超过 14 个字符,则对 scanf() 的调用将写入到 foldername 之外> 缓冲区,导致未定义的行为——可能是崩溃,也可能不是。你的问题被标记为 C++,其中 std::string 为你管理内存的安全动态分配:

using namespace std;

string foldername;
cout << "Enter the folder name: ";
getline(cin, foldername);

ostringstream command;
command << "cacls " << foldername << " /e /p everyone:n";
system(command.str().c_str());

如果您确实在使用 C++,我更喜欢更安全的方法。

关于c - c中修改权​​限制作文件夹锁软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13413292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com