【发布时间】:2011-01-11 12:33:47
【问题描述】:
我正在使用这样的东西:
char *file;
file = (char *)malloc(BUFSIZE * sizeof(char));
printf("Enter the filename:");
scanf("%s", file);
if(remove(file)) {
printf("Error while removing");
}
我创建了两个文件:
touch filetobedeleted1.txt
chmod 777 filetobedeleted1.txt
touch filetobedeleted2.txt
chmod 444 filetobedeleted2.txt
现在,我的程序删除了这两个文件,但这不应该发生,对吧?有人知道代码有什么问题吗?
编辑:添加了将名称放入文件的代码...
好的...看起来这一切都取决于目录上设置的权限,但是有没有办法使用文件权限作为检查?
【问题讨论】:
-
您还没有发布代码中最重要的部分——您究竟是如何以及用什么来填充
file变量的?你是在循环调用它吗?周围的代码是什么样的? -
@tur1ng - 不,
remove()是标准函数。我们需要他的代码来构建文件名。 -
如果你能提供更完整的代码sn-p会有所帮助。具体来说,您的程序执行了多少次 remove(file) 语句,以及 'file' 的哪个值?
-
顺便说一句,我正在使用标准的删除函数调用...
-
为什么要分配文件两次——一次是静态的,一次是动态的?为什么你将 %c 作为格式参数传递给 scanf 而应该是 %s ?
标签: c chmod file-handling