1、srand(time(NULL))使用不太正确,它只需要在程序开始调用一次,然后用rand()生成随机数就可以了
2、while(!feof(fp)) 这样去循环,是不对的,本来一个6字节的文件,用这种写法,会把文件写的超级大,原因在于不是读而是写文件,还是用题目提示的文件大小去循环比较合适
3、一些多于的头文件和多余代码,我也把它去掉。了
正确的代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char* argv[])
{
long len,i
if(argc != 2)
{
printf("Error command!\n")
return -1
}
FILE *fp = fopen(argv[1], "r+")
if(fp == NULL)
{
printf("Can't Open the File(%s)!\n",argv[1])
return -1
}
srand(time(NULL))
fseek(fp,0,SEEK_END)
len=ftell(fp)
fseek(fp,0,SEEK_SET)
for(i=0i<leni++)
{
char ch
ch = (char)rand()%255
fwrite(&ch, 1, 1, fp)
}
fclose(fp)
fp = fopen(argv[1], "w")
if(fp == NULL)
{
printf("Can't Open the File(%s)!\n",argv[1])
return -1
}
fclose(fp)
printf("Finished!\n")
return 0
}
文件粉碎机是可以使文件彻底删除。他的原理就是在被删除文件所占的空间处重新写一些随机文件,以覆盖掉原来的文件,部分专业粉碎机可以重复覆盖好几次,根据磁盘的储存原理,覆盖过的文件,最多只能恢复最后一次用来覆盖的乱码文件,而不能恢复已被覆盖改写的原文件,这样就达到了彻底删除原文件的目的。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)