C语言 文件读写

我想做几个C程序,让它来完成“加密--解密”,也就是说一个C程序把MS-DOS格式的文本文档转换成二进制文件(加密);另一个C程序二进制文件转换成MS-DOS格式的文本文档(解密)。
告诉我两个C程序的语句即可。

你是说文件的读写语句,不是加解密函数吧?
ok。 fopen打开文件,
FILE *fp;
fp=fopen(文件名,使用文件方式);
例如:  FILE *fp;aaaafp = fopen("file1","r");

fgetc()函数 读文件内容
从指定文件读入一个字符。fgetc函数的调用形式为:
ch=fgetc(fp);
从fp所指向的文件中读一个字符,返回读得的字符给变量ch。对于文本文件,遇文件尾时返回文件结束标志EOF。对于二进制文件,用feof(fp) 判别是否遇文件尾,feof(fp)=1说明遇文件尾。
fread函数和fwrite函数
fread函数和fwrite函数用来读写一个数据块。它们的一般调用方式为:
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
其中:
buffer:是一个指针。对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
size:要读写的字节数。
count:要进行读写多少个size字节的数据项。
fp:文件型指针。
如果以二进制形式打开文件,用fread函数和fwrite函数就可以读写任何类型的信息,例如:
fread(f,4,2,fp);

用fclose函数关闭文件。fclose函数调用的一般形式为:
fclose(文件指针)
例如:
fclose(fp);
fclose函数也带回一个返回值,当顺利关闭文件时,返回0,否则返回EOF(-1)。追问

这些我都在书上看到过,也都会用,就是不知道怎么把在文本文档文件读出来的文字以二进制形式保存在新文件里。
请多多指教!

追答

那你以二进制方式输出吧。二进制转换一下。然后再重新fopen一个新文件。把数据放进去。
总得有一个文件读,一个文件写。

追问

我的意思是:电脑上本来就有一个Break.mmx(120KB) 它是MS-DOS文本文件,我为了保险,就把它转换为二进制,让记事本、写字板不能直接将它打开,只有用我的另一个C程序将它转换为文本文件,才能被记事本、写字板打开。

追答

直接改扩展名,这样更方便吧?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-13

其实很简单,就是一个可逆的加密!

//要将该程序放到要加密的文件同一目录下,不然无法加密
//加密用
#include <stdio.h>
void main()
{
FILE *fr;
FILE *fw;
char filename[50];
char newfile[50];
char ch=0;
printf("请输入要加密的文件名:");
scanf("%s",filename);
printf("请输入要生成的文件名:");
scanf("%s",newfile);
fr=fopen(filename,"rb");
fw=fopen(newfile,"wb");
while((ch=fgetc(fr))!=EOF)
{
fputc(ch+10,fw);
}
fclose(fr);
fclose(fw);
}
//解密用
#include <stdio.h>
void main()
{
FILE *fr;
FILE *fw;
char filename[50];
char newfile[50];
char ch=0;
printf("请输入要解密的文件名:");
scanf("%s",filename);
printf("请输入要生成的文件名:");
scanf("%s",newfile);
fr=fopen(filename,"rb");
fw=fopen(newfile,"wb");
while((ch=fgetc(fr))!=EOF)
{
fputc(ch-10,fw);
}
fclose(fr);
fclose(fw);
}

本回答被提问者采纳
相似回答