本人刚学C语言不久,用C语言在DEV(4.9.9.2)编译器上编写了一个加密程序,编译出现问题,请高手指点!

什么问题?请高手指点,勿灌水!回答好的追加分!另外Turbo C 和 DEV C 有什么区别?

1、将encode,decode函数前面的char改成int;可以不必预先申明。
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文件。

追问

do { ch=getc(fp1); if(eof(fp1)) break; ch=ch^key; putc(ch,fp2); }while(1);
这样?

追答

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-08
先在main前面,声明下二个函数。
二个函数返回值有问题,我看截图是char的,但是里却什么也没返回 。

错误的意思,是说这二个函数跟前面的定义冲突了。我觉得就是你前面没有函数声明 。你先按上面二点改改。

还有一个EOF这是文件结束符的, 用EOF+1这个东西,貌似有点问题是。 与ch比较更有问题。
判断是不是到最后,用ch!=NULL这个比较。追问

ch 有什么问题?(NULL改完了)

第2个回答  2014-01-08
同志,编译器表示你的错误是: encode和decode这两个子函数,没有声明啊。。。。应该在使用他们之前声明一下,或者连个子函数放在main函数之前。
至于turboc c和dev c 的区别,其实turboc专门是针对c的编辑器,连接器的比较入门的,就是比较麻烦的,dev c比较简单,易于观察,就是升级啦,相当于。。。。也许dev c还有反编译,这个不确定,,,我们通常用visual c++6.0 或着vs 2008
第3个回答  2014-01-08
#include <stdio.h>

char encode(char *input, char *output, char key); // 加上函数声明
char decode(char *input, char *output, char key); // 加上函数声明

int main()
...

第4个回答  2014-01-08

    逍遥:
    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.武当

本人刚学C语言不久,用C语言在DEV(4.9.9.2)编译器上编写了一个加密程序...
3、功能上没有什么大的区别。dev是免费的,开源的,执行C标准比较严。Turbo C不支持中文,DEV支持。4、经过编码的文件,不应该当做文本文件。应该看做bin二进制文件。EOF在stdio.h中定义为(-1),EOF+1==0,ch==EOF+1时执行ch--,ch就成了EOF了,放进文件,就是文件结束。正确的做法是,不用EO...

刚学习C++编程,用Dev-C++4.9.9.2版本老提示源文件未编译,是什么原因
return()改成return 0;

学C语言新装了Dev-c++4.9.9.2运行一个C源文件时Ctrl+f5出现一个黑框一...
它是运行完了之后,那个dos窗口自动消失了,你可以在dos里面调用你的程序查看运行结果,或者把代码改一下,最后加个键输入停顿 ,比如 getchar()

Dev c++4.9.9.2的详细使用方法
1. 把“生成调试信息”设置为 Yes。方法如下:Tools(工具) --> Compiler Options(编译器选项) --> Settings(设置)2. 编译程序。请参考:Dev-C++ 安装&使用教程 Dev-C++ 编译多文件程序的方法 3. 设置断点(Break point)把光标移动到您想暂停执行的那一行,按 ctrl + F5,或者直接用鼠标...

C语言求一个三位数的各位数和
\/*计算百位数字*\/ int shiwei =( number - baiwei * 100 ) \/ 10; \/*计算十位数字*\/ int gewei = number % 10; \/*计算各位数字*\/ printf("%d",gewei+shiwei+baiwei);system("PAUSE");return 0;} 上例在dev cpp 4.9.9.2中编译通过 ...

DEV C++和VC++编译C语言的区别
1、VC++ 和DEV C++都是C++语言的开发工具。如果只是做些小程序,基本上看不出区别。两者DEBUG和RELEASE上的时间有所不同。还有一点就是,通常如果是在VC++下编写的代码,不是很规范,拿到DEV C++上会报错。而反过来则可以运行。这里涉及到GCC的问题,它对标准的支持表现在不支持非标准的东西,但是 DEV...

devc++4.9.9.2怎么编 c语言
先左上角“文件”->“新建”->"工程":选工程类型,一般初学者选“Console Application”(就是编出来一个黑框的那种程序),下面确定工程名和语言(C\/C++),点确定,保存完后工程就开好了,你可以写了。写完后按F9,或者左上角的“编译运行”,再或者菜单中的"调试"->“编译运行”,选保存地址...

Dev c++4.9.9.2 的源文件未编译问题 C语言高手进
源程序要编译后才能运行.答案补充 必须是这样形式才能通过编译:int main(){ ...return 0;} 答案补充 510805035

这个汉诺塔的程序,帮我看一下为什么在DevC++4.9.9.2的C语言环境中有错...
void hannuo(int n,char one,char two,char thr); \/*多了分号,复制粘贴的吧*\/ { void move(char x,char y);if(n==1)move(one,thr);else { hannuo(n-1,one,thr,two);move(one,thr);hannuo(n-1,two,one,thr);} }

...和保存 怎样生成exe文件呢 我下的版本是4.9.9.2
heliqi1 采纳率:15% 擅长: 编程语言 C\/C++ 魔兽争霸 永州市 生活常识 其他回答 c++是继承C的,所以你一样可以用C,直接编译就可以了吧。不过有些地方不一样,建议不要用吧,我也不是特别清楚,我以前是用Visual c++ 6.0 qq290305221 | 发布于2012-04-07 举报| 评论 0 0 新建源代码。。然后另存为 ...

相似回答