编写一个程序,实现一个简单的文件粉碎机。

来源:百度知道 编辑:UC知道 时间:2024/05/29 18:56:25
其实现原理是,从命令行方式得到要粉碎的文件名,然后使用"r+"方式打开这个文件,向文件中写入随机内容直到文件末尾,然后关闭文件,再以"w"方式打开文件,不写入任何内容,关闭文件。注意,如果命令行中没有给出需要粉碎的文件名(例如没有从命令提示符窗口运行程序,而是从TC或VC中直接运行程序),那么应该要打印出错信息并退出。
fseek(fp,0,SEEK_END)可以将文件读写指针指向文件结尾;
fseek(fp,0,SEEK_SET)可以将文件读写指针指向文件结尾;
ftell()函数给出当前文件读写指针与文件开头之间以字节数计算的偏移量,所以判断文件大写的一段代码为:

fseek(fp,0,SEEK_END);
offset=ftell(fp);
printf("file size: %ld\n",offset);

四楼的程序整体是没有什么错的,但是有个问题。如果在windows下直接双击运行,则只会看到窗体一闪而过,根本看不到错误输出。因此需要加上system("pause");
完整代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <process.h>

int main(int argc, char* argv[])
{
long len,i;

if(argc != 2)
{
printf("Error command!\n");
system("pause");
return -1;
}

FILE *fp = fopen(argv[1], "r+");
if(fp == NULL)
{
printf("Can't Open the File(%s)!\n",argv[1]);
system("pause");
return -1;
}

srand(time(NULL));
fseek(fp,0,SEEK_END);
len=ftell(fp);
fseek(fp,0,SEEK_SET);
for(i=0;i<len;i++)
{
char ch;

ch = (char)rand()%255;
fwrite(&ch, 1, 1, fp);
}
fclose(fp);

fp = fopen(argv[1], "w");
if(fp == NULL)
{
printf(&quo