我正在创建一个可更改文件夹权限的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");
然后它不工作....!请帮我这个!!
答案 0 :(得分:3)
您对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 ++,我宁愿采用更安全的方法。