getch 和 getchar 在 windows 和 unix下的区别

注意getch()是从console读取,(非标准函数)
getch()需要的头文件是<conio.h>。
而getchar()是从stdin,一般是指键盘
windows平台下ENTER键会产生两个转义字符 \r\n,
\r : 回到开头的地方。
\n : 去到下一行开头

因此,getch()读到 \r 时就会返回他的ASCII码13。(后面的被无视了)
奇怪的问题是为什么getchar()会返回10呢?
前面不是说过返回第一个字符吗?
这的确会让人费解。实际上产生这个结果的原因是,
getchar()把输入的 \r\n 转换成了 \n ,
所以返回的是 \n 的ASCII码 10。为什么会这样呢?
因为前面说过getchar()是C语言标准库函数,
而在unix系统中ENTER键只产生 \n 。顺便说一下,
在MAC OS中ENTER键将产生 \r ,同样也会被替换成 \n。
这样,不管在什么平台下,getchar()都会得到相同的结果,
所以说getchar()标准库函数。

http://www.cnblogs.com/candyming/archive/2011/11/25/2262877.html

时间: 2024-11-08 23:31:41

getch 和 getchar 在 windows 和 unix下的区别的相关文章

Windows和Unix下的编码问题

今天测试shell脚本时,执行报错: ./report.sh: /tmp/tmp.E8ekx6r5Qq/report.sh: /bin/bash^M: bad interpreter: No such file or directory 找半天原因,结果发现是Windows和Unix下的编码问题,不兼容 在Linux下用vi编辑文本,在命令模式下用命令set ff=Unix  ,问题就解决了. Linux下测试经常会遇到这种情况,报错 ^M的一般就是编码问题解析不了.

socket在windows下和linux下的区别

windows到Linux代码移植遇到的问题 1.一些常用函数的移植 http://www.vckbase.com/document/viewdoc/?id=1586 2.网络 ------ 转载 & 修改(待整理) socket相关程序从windows移植到linux下需要注意的 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2)初始化 windows下需要用WSAStartup linux下不需要 3)关

转帖 NDIS中间层驱动开发在Win7系统下和Windows XP系统下的区别

NDIS中间层驱动的开发在Win7系统上和Windows XP系统上有差别.原帖:http://bbs.pediy.com/showthread.php?t=137545 我把NDIS中间层的讨论分成2块. windows 7系统和Windows XP系统. (一)在 Windows XP系统上进行开发  平时很多朋友包括我在内,我们都在XP系统上使用NDIS5.1的框架来进行程序开发.我们都使用Microsoft WDK提供的 NDIS 的 Passthru例子,在这个例子上做进一步的修改,来

在Windows和UNIX下利用PHP和LDAP进行身份验证

我现在的老板曾要求我为企业内部的Web服务提供一种标准的身份验证方法.我遇到的一个主要问题就是我们公司主要使用了两种平台:UNIX和.所以,我的第一个想法并不很成功:它要求每个员工都使用UNIX或者Linux而放弃. 我认为解决现在的UNIX/Windows问题的最好方法就是利用PHP的LDAP特性.由于LDAP,要求我使用现有的系统,主要指的是一个巨大的 Microsoft Exchange Server系统.我非常高兴使用Exchange,它很可靠,而且LDAP特性的使用和配置也极为简单.不

otl库(以前不知道有这个库,并且还可以在Unix下使用)

OTL介绍:OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例如Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等.OTL中直接操作Oracle主要是通过Oracl

Windows 和 Linux 中的换行与回车的区别,Windows下编写的Shell脚本,直接放到linux/unix下执行会报错

首先: CR(Carriage Return)表示回车 LF(Line Feed)表示换行 Dos和Windows采用回车+换行(CR+LF)表示下一行而UNIX/Linux采用换行符(LF)表示下一行苹果机(MAC OS系统)则采用回车符(CR)表示下一行 Windows下编写的Shell脚本,直接放到linux/unix下执行会报错,就是因为行结束符不一样导致的. 现在好多文本工具都提供了转换功能,如我常用的,也是最强大的工具 (个人感受,不是打广告):notepad++. 原文地址:htt

getch与getchar区别

getch(): 所在头文件:conio.h 函数用途:从控制台读取一个字符,但不显示在屏幕上 getchar(): 所在头文件:stdio.h getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车, 只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1. 输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示 有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继

getch()和getchar()之再讨论

原文:getch()和getchar()之再讨论 在C语言的字符处理函数中,getch()和getchar()是经常让人迷惑的两个函数,他们都有一些“奇怪的”特点让初学者摸不着头脑.两个函数有很多相似之处,却又有很大的不同.下面是两个函数的说明: int getch( void ); Get a character from the console without echo int getchar ( void );   Get character from stdin, Returns the

Linux,Windows,Mac OS下换行的不同表示

一开始用Liunx进行编程,最近把学编程的平台转移到Mac上.在这其间就出现一些问题,特别是换行符的问题.在使用scanf等输入/输出函数时,在进行换行时就无法出现预期的换行效果. 原来,在三个主流平台上,换行符的表示是不一样的. Unix系统里,每行结尾只有“<换行>”,即“\n”. Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”. Mac系统里,每行结尾是“<回车>”,即“\r”. 这种情况下,Unix/Mac系统下的文件在Win