赞
踩
本篇主要介绍换行和回车,以及在C语言中的应用。
getchar值获得’\n’;getch()只获得’\r’.
“\r\n” = Enter
“\r” = Enter
“\n” = Enter
(Depending on your OS)
编程中,以防程序运行一闪即失,总是要在最后来一个“getch();”
getch()和getche()需要”conio.h”
附:
getch 从键盘无回显地读一字符
调用格式 #include”stdio.h”
int getch(void);
原型在 conio.h
说明 getch从键盘直接读一个字符,不回显到屏幕上。
返回值 getch返回从键盘所读的字符。
可移植性 getch只适用于DOS
getchar 从stdin流中取字符
调用格式 #include”conio.h”
int getchar(void);
原型在 stdio.h
说明 getchar是一个宏,用于返回指定的stdin输入流的下一个字符, 它定义为getc(stdin)。
返回值 调用成功时,getchar返回所读的字符,它已被转换为无符号扩展的整形值。在遇到文件结束或出错时,
返回EOF。
可移植性 getchar适用于UNIX系统,在ANSI C中定义,与Kernighan和Ritchie的定义兼容
实测,getch不回显,getche回显,这两个函数用于从控制台(黑窗口)读取输入的字符,不是标准的C语法,但一般windows,Linux/unix都可以用。按enter键得到的字符是’\r’;
getchar是标准C的函数,得到’\n’
是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说 ,如果stdin有数据的话不用输入就可以直接读取了。而getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符。
键盘输入的字符,需要通过按Enter键刷新到标准输入流,这也就是为什么,用getchar必须先按enter键才能读取字符。
conio.h不是C标准库中的头文件,在C standard library,ISO C 和POSIX标准中均没有定义。
conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。
大部分DOS,Windows 3.x,Phar Lap,DOSX,OS/2 or Win32平台上的C编译器提供此文件,UNIX 和Linux平台的c编译器通常不包含此头文件。
如果需要使用此头文件,可以从互联网下载。
不同计算机上c语言统一规定为:
文本文件的行结束符一律变成一个符号LF,也就是换行符,也就是new line符, 也就是’\n’.
文本文件的行结束符,传统上
PC机 用 CRLF
苹果机用CR
unix 用 LF
CR – 回车符,c语言’\r’
LF – 换行符, c语言’\n’
不同计算机上c语言统一规定为:
文本文件的行结束符一律变成一个符号LF,也就是换行符,也就是new line符, 也就是’\n’.
“回车和换行符转换成一个换行符”– 对PC机而言,文本文件行结束符,CRLF读入后,丢掉CR,留 LF.
例如fgets() 读入一行,行尾只有LF,没有CR.
在解析文本或其他格式的文件内容时,常常要碰到判定回车换行的地方,这个时候就要注意既要判定”\r\n”又要判定”\n”。写程序时可能得到一行,将其进行trim掉’\r’,这样能得到你所需要的string了。
‘\n’ 10 换行(newline)
‘\r’ 13 回车(return)
在Unix/Linux平台下
“文本”与“二进制”模式没有区别。
数据有字符型和非字符型(数)两种。按文本方式写文件指的是将数据转换为对应的字符型数据之后再写入文件。对于字符型数据,由于其本身就是ASCII码字符,一般不必转换,直接写入文件。但是,由于不同的系统对于换行符(’/n’)有不同的处理(转换)方式,在有的系统(如Windows)下也会对 ‘/n’ 作适当的转换。
windows平台下,C语言写换行到文件,会写’\r\n’到文件,因此在;C语言读文件,如果到’\r\n’会忽略掉’\r’只返回’\n’表示遇到了换行。因此在C语言看来,’\n’就表示换行。
二进制方式打开和文本方式打开唯一的区别也就在对换行符的处理上,以二进制方式打开写什么就是什么,读什么就是什么;以文本方式打开,写’\n’相当于写’\r\n’;独到’\r\n’相当于读’\n’。
二进制读写是将内存里面的数据直接读写入文本中,而文本呢,则是将数据先转换成了字符串,再写入到文本中。
二进制读写就用fwrite和fread,想读多少自己就读多少字节,完全按照程序员的意愿;文本读写,可用fscanf和fprintf,这两个函数会把拿到的二进制流每8个二进制位看出一个ASCII码,并进行处理 。
1.cnblog 回车符和换行符区别:
http://www.cnblogs.com/yunf/archive/2011/04/20/2021830.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。