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条)