文件操作问题
此程序用于英文文本文件加密,采用费杰尔加密算法,原理是将原来的英文字符加上对应的密钥字符串中的字符然后再模26求余.
#include <stdio.h>
main(int argc,char *argv[]) /*命令行格式为 加密程序 原文件名 密钥 新文件名*/
{
FILE *fp1,*fp2;
char *p,ch;
p=argv[2]; /* p指向密钥字符串*/
if (argc!=4)
{
printf("input error!\n");
exit(0);
}
if (fp1=fopen(argv[1],"r")==NULL)
{
printf("cannot open file %s",argv[1]);
exit(0);
}
if (fp2=fopen(argv[3],"w")==NULL)
{
printf("cannot open file %s",argv[3]);
exit(0);
}
while (!feof(fp1))
{
for (;*p!='\0';p++)
{
if (feof(fp1))
break;
ch=fgetc(fp1);
if ((ch>='A')&&(ch<='Z')) /*加65、97的目的是为了输出对应的字母*/
ch=(ch+*p)%26+65;
if ((ch>='a')&&(ch<='z'))
ch=(ch+*p)%26+97;
fputc(ch,fp2);
}
p=argv[2];
}
fclose(fp1);
fclose(fp2);
}
编译通过,问题就是当我命令行里只输入3个参数的时候,输不出input error!
而且正确输入参数后,生成的密文文件的内容却是空的