回 帖 发 新 帖 刷新版面

主题:神啊,我又来了~

《C Primer Plus》一书看到第八章了,有若干个问题不明白,望高手不吝指点,

环境为Dev-C++。以下便是:



1).我无意中打开了stdio.h这个文件,习惯性的点了调试,提示“源文件未编译

”我又点了编译,没反应~~。这是咋回事?

编译是不是启动连接器,生成可执行文件的一个命令?这种无法编译的情况是什

么?

2).我朋友做的一个魔塔小游戏,我拿到源码后,就一个一个的点编译看看什么情

况,全部是syntax error。- -!然后我问他,没有图片,

游戏怎么运行?他说,已经在游戏里了。那无法通过编译,怎么能运行游戏呢?

理解不了。。。

3).我在自己的家庭作业程序集中,运行某个字符显示ASCII码的程序,发现无法

使用复制(Ctrl+c)、粘贴(Ctrl+v)而且想再接着键入,

没反应,哪怕是什么结束程序的条件也没用,只能点关闭。如果是Ctrl+z的话,

屏幕上变成^Z而且z小写变成大写,输出的结果是数字-1。

换成Ctrl+b,b也换成大写,我回车确认,输出个笑脸一样的符号和数字2,换成

Ctrl+a,a一样变大写,我都没确认发到缓冲区,自己变的。。。

输出结果也是个笑脸一样的符号和数字1,不同是看起来a像黑种人笑。。。b像白

种人笑。。。查了ASCII码表发现1和2分别是^A与^B的

十进制值。Ctrl+d就更奇怪,仍旧变成^D,然后输出个实心棱形(就是这个棱形

◆)还有4。。。ASCII表上是D end of file(EOF?)

前几天刚知道了除数不能为0,说是硬件在设计时设定的。难道这种情况也是硬件

方面的问题?



以上三个问题,求解!!!谢谢,我是个新手,书本以外的很多东西都不懂,莫

怪。常常有问题。。。我怕以后养成依赖论坛的习惯就麻烦了~~

回复列表 (共3个回复)

沙发

德国Hasili(海士力)公司位于德国的Mittenaar,是一家统一通信技术厂商,主要产品有软件、硬件高清视频会议、网真、远程医疗会诊、硬件调度指挥平台等。产品以基于自有算法的音频技术为核心,技术先进,所有产品都是具有高标准的质量,通过了DIN EN ISO9001认证。Hasili(海士力)公司一直致力于统一通信的研发,以求为人们创造更加高效、舒适、环保的现代化工作、生活环境。经过多年的发展,Hasili(海士力)公司与许多跨国公司保持着非常良好的合作关系,是他们稳定的国际技术服务提供商。

010-83684093 傅先生

板凳

1.     编译器编译文件时认文件后缀名的(gcc可以用 -x c filename 来强制指明filename为c语言源文件)。一般.h文件是头文件, 包括一些宏定义,函数申明,外部变量申明,静态函数和内联函数的定义等等;最起码要有个程序入口函数(如main函数)才能编译吧。.h文件是要用#include预处理命令包含进某个.c文件,然后在再把.c文件翻译成可执行文件。

 2.     为什么全部是syntax error呢?这个问题不好回答。不同的编译器为了在某些方面使用起来更方便,添加了一些特性,这样就很难再用其他编译器编译;你朋友在写代码的时候有可能无意识的使用了那些特性。编译器对C标准支持的程度不同。还有个愿意是,C标准库中是没有图形库的,这样你朋友使用的那个图形库可能在你的机器上没有。
 
 3.    “我在自己的家庭作业程序集中,运行某个字符显示ASCII码的程序”“复制(Ctrl+c)、粘贴(Ctrl+v)?” 这句话我没看懂是什么意思?你是指使用的是 一款文本编辑器 还是 你自己用C语言写的程序呢? 如果是用c语言写的程序, 那么你怎么知道Ctrl+c就是复制,Ctrl+v就是粘贴呢?一般而言,Ctrl+c 表示的是 退出程序,在signal.h里面对应的是SIGINT这个常量。c标准库里面的中断部分(signal.h)并不是十分可靠。其他的Ctrl+字母 表示什么意思,我不清楚。从键盘输入 Ctrl+x(x表示的是a~z这26个字母),如果用getchar函数来获取整个输入的值的话,有这样的规律(括号里面,前面表示x,后面表示getchar或getch函数的得到ASCII码值):(a,1),(b,2),(c,3),(d,4),(e,5),(f,6),...(z,26).按这个规律,可以知道Ctrl+a将得到1(笑脸)。ASCII码的前32个字符是控制字符,一般不能像字母字符一样显示出来,不同的编码将显示不同的结果。

3 楼

回2楼,那个所谓的粘贴与复制,指的是在大部分程序中使用的复制与粘贴,我以为在自己用DEV写的程序中也可以用,其实,后来我自己看书,明白一点点了,比如那个Ctrl+z,是-1。表示EOF,因为程序是显示ASCII码,所以,出了-1这个结果,感谢你的帮助,谢谢。

我来回复

您尚未登录,请登录后再回复。点此登录或注册