本人刚学C语言不久,用C语言在DEV(4.9.9.2)编译器上编写了一个加密程序,编译出现问题,请高手指点!
2、#include <ctype.h>,toupper()函数在里面。另外,这个函数只处理一个字符,你的意思恐怕是处理整个字符串s,应该使用循环:
3、功能上没有什么大的区别。dev是免费的,开源的,执行C标准比较严。Turbo C不支持中文,DEV支持。
4、经过编码的文件,不应该当做文本文件。应该看做bin二进制文件。EOF在stdio.h中定义为(-1),EOF+1==0,ch==EOF+1时执行ch--,ch就成了EOF了,放进文件,就是文件结束。
正确的做法是,不用EOF,而是使用eof(FILE *f)函数,如此,担心一个字符编码后成了EOF就不必要了。
注意,decode的if(ch==EOF+1)ch--,应该在解码之前执行,因为在encode里面对应的语句if (ch==EOF)ch++;是在编码之后执行的。要还原的是编码之后的字符。
再解释一下第四点(最好帮我改一下代码)
第一种办法:
将所有if(ch==EOF)改成if(eof(fp1)), 删除为了纠正编码出现EOF(-1)问题的语句if(ch==EOF) ch++;及if(ch==EOF+1)ch--
这个办法较好,适用于各种文件,不仅仅是txt文件。
第二种办法,保留你的做法,在decode中将
if(ch==EOF+1)ch--;
移到ch=ch^key;的前面。
这个办法,你的编码解码程序只适用于txt文件。
二个函数返回值有问题,我看截图是char的,但是里却什么也没返回 。
错误的意思,是说这二个函数跟前面的定义冲突了。我觉得就是你前面没有函数声明 。你先按上面二点改改。
还有一个EOF这是文件结束符的, 用EOF+1这个东西,貌似有点问题是。 与ch比较更有问题。
判断是不是到最后,用ch!=NULL这个比较。
ch 有什么问题?(NULL改完了)
至于turboc c和dev c 的区别,其实turboc专门是针对c的编辑器,连接器的比较入门的,就是比较麻烦的,dev c比较简单,易于观察,就是升级啦,相当于。。。。也许dev c还有反编译,这个不确定,,,我们通常用visual c++6.0 或着vs 2008
#include <stdio.h>
char encode(char *input, char *output, char key); // 加上函数声明
char decode(char *input, char *output, char key); // 加上函数声明
int main()
...
逍遥:
1体=50.5血+5.1外防
1定=36蓝+8.2内防
1灵=7.6攻击
1身法=7.5命中+4闪避+1/20会心+1/20会防
峨眉:
1体=50.5血+5.1外防
1定=40蓝+8.3内防
1灵=7.6攻击
1身法=7.5命中+2闪避+1/25会心+1/25会防
武当:
1体=43.8血+4.4外防
1定=32蓝+7.6内防
1灵=8.9攻击
1身法=7命中+2.5闪避+1/20会心+1/20会防
星宿:
1体=52血+5外防
1定=36蓝+8.9内防
1灵=7.6攻击
1身法=6命中+3闪避+1/18会心+1/18会防
天龙:
1体=58.1血+6.4外防
1定=27蓝+6.3内防
1灵=6.4内功攻击
1力=6.4外功攻击
1身法=9命中+3闪避+1/33会心+1/33会防
天山:
1体=55.8血+7外防
1定=25蓝+4.4内防
1力=7.6攻击
1身法=8命中+3.3闪避+1/15会心+1/15会防
少林:
1体=71.5血+8.3外防
1定=25蓝+5.7内防
1力=7.6攻击
1身法=6.5命中+2闪避+1/25会心+1/25会防
明教:
1体=55.2血+5.7外防
1定=20蓝+4.5内防
1力=8.2攻击
1身法=7.5命中+3闪避+1/17会心+1/17会防
丐帮:
1体=60血+7.6外防
1定=20蓝+5.1内防
1力=7.6攻击
1身法=8命中+4闪避+1/17会心+1/17会防所以1.少林 2.丐帮 3.天龙 4.天山 5.明教 6.星宿 7.峨眉 8.逍遥 9.武当