以下是引用TonyDeng在2012-12-31 17:13:07的发言:
每接收一次按键ch = getch(),先排除它不是编辑键,而且判断ch是普通的字符,那么就用putch(ch)把这个字符输出到屏幕上光标的位置处,如果要变色,就在putch()之前变,变过之后,对以后的输出字符起作用,什么时候要变,就什么时候设。
要输出回车换行,必须输出两个字符!
putch(0x0D);
putch(0x0A);
这是一个两编码字符,亦即所谓的'\n'。这就是前面告诉你,千万不要用'\n'来判断字符的原因。在conio环境中,'\n'是一个被特殊处理的字符,它会随着平台的不同而不同,在Windows中,它往往是'\r'+'\n'(0x0D0A),而在Unix/Linux中,才是'\n'(0x0D)。输出putch(0x0D),仅仅是回车,光标返回行头,但不会跳到下一行,输出putch(0x0A),是仅仅换行,但光标不返回行头,必须两个字符一起输出,才是正常的回车换行动作(顺序无关紧要,可以颠倒,效果是一样的)。如果输出putch('\n'),则系统会根据平台来处理,在Windows下,执行回车换行动作。看到没有,三种是不一样的!这种情况,同样会出现在文件读写处理的'\n'符中,当某个文件要移植到不同的平台下时,这个'\n'往往会引起怪异现象,通常标准库的流读写函数自己检测平台执行转换处理,但如果你要自己处理每一个字节,问题就在这里出现了。
不知道这个的人,就总爱用ASCII来取代字符,根本是不怕死的。须知字符就是字符,不是什么整数,人的逻辑区分这是不同的数据类型,不是你学过什么底层之后就可以随便混起来写的,学C就是这一点学坏人,非常不好的习惯。
如果还不知道怎么回事,看看12楼。
fp=fopen("d:\\b.txt","r");
从这句打开文件的语句看,很明显就是根本没这方面的意识。这是"rt"还是"rb"?
[
本帖最后由 TonyDeng 于 2013-1-4 23:17 编辑 ]