c语言中同一函数getchar与scanf的运用,结果却出现不同,这是为什么?具体见下。 为什么在C语言中,字符型不能用SCANF输入,而是用GETC...

c\u8bed\u8a00\u4e2d\uff0cscanf\u51fd\u6570\u548cgetchar\u51fd\u6570\u7684\u533a\u522b\u662f\u4ec0\u4e48\uff1f\u6c42\u89e3\uff01\uff01\uff01

getchar()
getchar()\u662fstdio.h\u4e2d\u7684\u5e93\u51fd\u6570\uff0c\u5b83\u7684\u4f5c\u7528\u662f\u4ecestdin\u6d41\u4e2d\u8bfb\u5165\u4e00\u4e2a\u5b57\u7b26\uff0c\u5982\u679cstdin\u6709\u6570\u636e\u7684\u8bdd\u4e0d\u7528\u8f93\u5165\u5b83\u5c31\u53ef\u4ee5\u76f4\u63a5\u8bfb\u53d6\u4e86\u3002
for(int i=0;i<10;++i)
{
char ch=getchar();
printf ( "ch=%c\n", ch );
}
\u5f53\u8f93\u4e86\u591a\u4e2a\u5b57\u7b26\uff0c\u4ee5\u540e\u7684getchar()\u518d\u6267\u884c\u65f6\u5c31\u4f1a\u76f4\u63a5\u4ece\u7f13\u51b2\u533a\u4e2d\u8bfb\u53d6\uff0c\u5e76\u663e\u793a\u5230\u5c4f\u5e55\u4e0a\u3002
\u5982\u679c\u6211\u60f3\u8ba9getchar()\u6bcf\u6b21\u90fd\u80fd\u591f\u7b49\u5f85\u7528\u6237\u8f93\u5165\u7684\u8bdd\u5c31\u8981\u6e05\u7a7a\u7f13\u51b2\u533a\uff0c C\u6807\u51c6\u89c4\u5b9a fflush()\u51fd\u6570\u662f\u7528\u6765\u5237\u65b0\u8f93\u51fa\uff08stdout\uff09\u7f13\u5b58\u7684\u3002\u5bf9\u4e8e\u8f93\u5165\uff08stdin\uff09\uff0c\u5b83\u662f\u6ca1\u6709\u5b9a\u4e49\u7684\u3002\u4f46\u662f\u6709\u4e9b\u7f16\u8bd1\u5668\u4e5f\u5b9a\u4e49\u4e86 fflush( stdin )\u7684\u5b9e\u73b0\uff0c\u6bd4\u5982\u5fae\u8f6f\u7684VC\u3002\u5176\u5b83\u7f16\u8bd1\u5668\u662f\u5426\u4e5f\u5b9a\u4e49\u4e86 fflush( stdin )\u7684\u5b9e\u73b0\u5e94\u5f53\u67e5\u627e\u5b83\u7684\u624b\u518c\u3002GCC\u7f16\u8bd1\u5668\u6ca1\u6709\u5b9a\u4e49\u5b83\u7684\u5b9e\u73b0\uff0c\u6240\u4ee5\u4e0d\u80fd\u4f7f\u7528 fflush( stdin )\u6765\u5237\u65b0\u8f93\u5165\u7f13\u5b58\u3002\u5bf9\u4e8e\u6ca1\u6709\u5b9a\u4e49 fflush( stdin )\u7684\u7f16\u8bd1\u5668\uff0c\u53ef\u4ee5\u4f7f\u7528 fgets()\u51fd\u6570\u6765\u4ee3\u66ff\u5b83\uff08\u6bd4\u7528 getchar()\u3001scanf()\u7b49\u51fd\u6570\u901a\u7528\u6027\u597d\uff09\u3002\u53ef\u4ee5\u8fd9\u6837\u5ffd\u7565\u8f93\u5165\u6d41\u4e2d\u7559\u4e0b\u7684\u56de\u8f66\u7b49\u5176\u5b83\u8f93\u5165\uff0c\u4ece\u800c\u4f7f\u4e0b\u4e00\u6b21\u7684\u8f93\u5165\u603b\u4fdd\u6301\u4e00\u4e2a\u201c\u5e72\u51c0\u201d\u7684\u72b6\u6001\u3002\uff08\u8fd9\u4e2a\u662f\u4efb\u4f55\u5e73\u53f0\u4e0b\u90fd\u53ef\u4ee5\u7684\uff09
for(int i=0;i<10;++i)
{

char ch=getchar();
fflush(stdin); //\u6bcf\u6b21\u90fd\u4f1a\u6709\u7b49\u5f85\u72b6\u6001\u4e86\uff08VC\u5e73\u53f0\uff09
printf ( "ch=%c\n", ch );
} scanf\uff08\uff09
scanf\u8fd9\u4e2a\u5e93\u51fd\u6570\u6bd4\u8f83\u5947\u602a,\u800c\u4e14\u5b58\u5728\u4e00\u5b9a\u7684\u7f3a\u9677,\u6240\u4ee5\u5f88\u591a\u4eba\u90fd\u4e0d\u7528\u4e86\u3002
scanf\u8f93\u5165\u5b57\u7b26\u4e32,\u6574\u578b,\u5b9e\u578b\u7b49\u6570\u636e\u5224\u65ad\u7684\u65b9\u5f0f\u90fd\u4e00\u6837,\u56de\u8f66,\u7a7a\u683c,tab\u952e\u90fd\u8ba4\u4e3a\u662f\u4e00\u4e2a\u6570\u636e\u7684\u7ed3\u675f,\u5f53\u7136\u5b57\u7b26\u7684\u8bdd,\u4e00\u4e2a\u5b57\u7b26\u5c31\u662f\u7ed3\u675f\u4e86,\u56de\u8f66,\u7a7a\u683c\u7b49\u90fd\u6709\u5bf9\u5e94\u7684ascii\u7801,\u6240\u4ee5\u7528scanf\u8f93\u5165\u5b57\u7b26\u65f6\u8981\u5c0f\u5fc3\u8fd9\u4e9b\u4e1c\u4e1c\u88ab\u5f53\u6210\u5b57\u7b26\u8f93\u8fdb\u53bb,\u800c\u8f93\u5165\u5b57\u7b26\u4e32\u548c\u6574\u578b,\u5b9e\u578b\u7b49\u6570\u636e\u65f6\u8fd9\u4e9b\u90fd\u88ab\u5f53\u6210\u5206\u9694\u7b26\u800c\u4e0d\u4f1a\u88ab\u8f93\u5165\u5230\u5b57\u7b26\u6570\u7ec4\u6216\u53d8\u91cf\u91cc\u3002

\u697c\u4e3b\u4f60\u597d\uff0c\u5173\u4e8e\u4f60\u95ee\u7684\u8fd9\u4e2a\u95ee\u9898\u5728\u6211\u521d\u5b66C\u8bed\u8a00\u7684\u65f6\u5019\u4e5f\u9047\u5230\u8fc7\uff0c\u4e0d\u4ec5\u662f\u4e00\u4e2a\u4eba\u9047\u5230\uff0c\u8fd9\u662f\u5f88\u591a\u521d\u5b66\u8005\u90fd\u4f1a\u9047\u5230\u7684\u95ee\u9898~\uff0c\u5f53\u7136\uff0c\u6211\u4e0d\u662f\u8bf4\u697c\u4e3b\u5927\u54e5\u4f60\u662f\u521d\u5b66\u8005~~~\u5475\u5475~~~~~~~\u8fd9\u4e2a\u95ee\u9898\u66fe\u7ecf\u9ebb\u75f9\u4e86\u5f88\u591a\u4eba\uff0c\u5f00\u59cb\u6211\u4e5f\u662f\u4e0d\u77e5\u9053\u662f\u4ec0\u4e48\u539f\u56e0\uff0c\u76f4\u5230\u4e00\u6b21\u5076\u7136\u7684\u673a\u4f1a\u6211\u624d\u77e5\u9053\u95ee\u9898\u7684\u6240\u5728~`
\u51fa\u9519\u539f\u56e0\u5982\u4e0b\uff1a
\u5f53\u4f60\u8f93\u5165\u6570\u636e\u540e \u56de\u8f66\uff0c\u6570\u636e\u624d\u88ab\u51fd\u6570\u201cscanf\uff08\uff09\u201d\u8bfb\u5165\uff0c\u95ee\u9898
\u5c31\u51fa\u5728\u8fd9\u4e2a\u201c\u56de\u8f66\u201d\u4e0a\uff1b\u5728C\u91cc\u9762 \u56de\u8f66 \u952e\u662f\u5f53\u4e24\u4e2a\u5b57\u7b26\u6765\u7528\u7684\uff1a\u5373
\u201c\u56de\u8f66\u201d\u548c\u201c\u6362\u884c\u201d\uff1b\u8fd9\u6837\u4e00\u6765\uff0c\u95ee\u9898\u5c31\u6765\u4e86\uff1b\u5f53\u4f60\u7d27\u63a5\u7740\u5728
\u201cscanf\uff08\uff09\u201d\u540e\u9762\u518d\u6765\u4e00\u53e5\u201cscanf\uff08\uff09\u201d\u8bfb\u5165\u4e00\u4e2a\u5b57\u7b26\u7684\u65f6\u5019\uff0c
\u6b64\u65f6\u5728\u7b2c\u4e8c\u4e2a\u201cscanf\uff08\uff09\u201d\u91cc\u9762\u8bfb\u5165\u7684\u4e0d\u662f\u4f60\u8f93\u5165\u7684\u90a3\u4e2a\u5b57\u7b26~~~ \u800c\u662f\u90a3\u4e2a\u4f7f\u4eba\u5ffd\u7565\u7684 \u201c\u56de\u8f66\u201d\u5b57\u7b26\uff1b
\u5f53\u7136\uff0c\u8981\u662f\u4f60\u7b2c\u4e8c\u53e5\u201cscanf\uff08\uff09\u201d\u4e0d\u662f\u8f93\u5165\u5b57\u7b26\u800c\u662f\u8f93\u5165\u6570\u636e\u7684 \u8bdd\uff0c \u90a3\u5c31\u6ca1\u6709\u6b64\u95ee\u9898\u51fa\u73b0\u3002
\u89e3\u51b3\u7684\u529e\u6cd5\u662f\u5728\u7b2c\u4e8c\u4e2a\u201cscanf\uff08\uff09\u201d\u8bed\u53e5\u524d\u52a0\u4e00\u53e5getchar();
\u6b64\u5904\u7684getchar();\u5c31\u662f\u7528\u6765\u541e\u566c\u6389\u524d\u9762\u7684\u201c\u56de\u8f66\u201d\u3002
\u5176\u5b9eC\u8bed\u8a00\u4e0d\u4ec5\u4ec5\u53ea\u6709\u8fd9\u4e2a\u4f7f\u4eba\u9ebb\u75f9\u7684\u95ee\u9898\uff0c\u8fd8\u6709\u8bb8\u591a \u662f\u4f60\u81ea\u8ba4\u4e3a\u662f\u5bf9\u7684\u8bed\u53e5\uff0c\u5728\u4f60\u8fd0\u884c\u7684\u65f6\u5019\u4f1a\u51fa\u73b0\u4e00\u4e9b\u83ab\u540d\u5176\u5999\u7684\u9519\u8bef\uff0c\u4f7f\u4eba\u9632\u4e0d\u751a\u9632\u3002\u8fd9\u53c8\u662fC\u8bed\u8a00\u7684\u4e00\u4e2a\u4e0d\u8db3\u4e4b\u5904\u3002

getchar
从stdio流中读字符,相当于getc(stdin),它从标准输入里读取下一个字符。返回类型为int型,返回值为用户输入的ASCⅡ码,出错返回-1。
getchar获取 的是字符,而不是字符串。

函数 scanf() 是从标准输入流stdio (标准输入设备,一般是键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
其调用形式为: scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致。

getchar()函数有什么用?下面的gets函数就是用来输入姓名吧?

  • c璇█getchar鏄粈涔堟剰鎬
    绛旓細澶氭璋冪敤getchar鍑芥暟鍙互閫愪釜璇诲彇鐢ㄦ埛鐨勮緭鍏ワ紝澶勭悊瀹屾瘯鍚庡啀杩涜杈撳嚭鎿嶄綔銆傚綋璇诲彇鍒板瓧绗︿覆鏈熬鏃讹紝鍙互閫氳繃鐗瑰畾绗﹀彿锛堝Ctrl+Z锛夊憡璇夌▼搴忓仠姝㈣緭鍏ワ紝浠ユ鏉ョ粨鏉熶氦浜掑紡杈撳叆銆傞櫎浜唃etchar鍑芥暟澶栵紝C璇█涓杩樻湁getch銆乬etche绛夊嚱鏁帮紝瀹冧滑鐨勫姛鑳介兘鏄被浼肩殑锛屼笉鍚屼箣澶勫湪浜庡彲浠ユ帶鍒惰緭鍏ユ椂鏄惁鏄剧ず鐢ㄦ埛杈撳叆鐨勫瓧绗︺傚叾涓...
  • c璇█getchar()鐨鐢ㄦ硶
    绛旓細getchar锛堬級鏄 C 璇█涓鐨勪竴涓爣鍑嗗簱鍑芥暟銆俫etchar锛堬級 鐢ㄤ簬浠庢爣鍑嗚緭鍏ワ紙閫氬父鏄敭鐩橈級璇诲彇涓涓瓧绗︼紝骞跺皢鍏朵綔涓 int 绫诲瀷杩斿洖銆傝繖涓嚱鏁板湪 stdio.h 澶存枃浠朵腑瀹氫箟銆俫etchar锛堬級鍑芥暟鍦ㄧ▼搴忎腑闈炲父鏈夌敤锛屽畠鍏佽鎴戜滑璇诲彇鐢ㄦ埛杈撳叆鐨勫瓧绗︺傝繖涓嚱鏁颁細闃诲绋嬪簭鎵ц锛岀洿鍒扮敤鎴疯緭鍏ヤ竴涓瓧绗︺傜敤鎴疯緭鍏ョ殑瀛楃鐒跺悗琚...
  • c璇█閲実etchar()鏄粈涔
    绛旓細c璇█閲実etchar锛堬級鏄粈涔 getchar鍑藉紡浠庢爣鍑嗚緭鍏ラ噷璇诲彇涓嬩竴涓瓧鍏冿紝杩斿洖鍨嬪埆涓篿nt鍨嬶紝杩斿洖鍊间负浣跨敤鑰呰緭鍏ョ殑ASC鈪$爜锛屽嚭閿欒繑鍥濫OF銆 璇ュ嚱寮忓鍛婂湪stdio.h鏍囧ご妗f涓紝浣跨敤鐨勬椂鍊欒鍖呭惈stdio.h鏍囧ご妗f銆傞氬父锛屽彲浠ュ埄鐢╣etchar鍑藉紡璁╃▼寮忛櫎閿欐墽琛岀粨鏉熷悗绛夊緟绋嬪紡璁捐鑰呮寜涓嬮敭鐩樻墠杩斿洖缂栬緫浠嬮潰銆侰璇█...
  • c璇█閲実etchar()鏄粈涔
    绛旓細)鍑芥暟鏄C璇█涓撻棬涓鸿緭鍏ュ崟涓瓧绗﹁屾彁渚涚殑锛getchar()鍑芥暟鏄粠I/O瀛楃娴佷腑璇诲彇涓涓瓧绗︼紝蹇呴』杈撳叆鎹㈣鎵嶈兘璇诲叆瀛楃銆備緥濡傦細include<stdio.h> int main(void){ char ch;int i;for(i=0;i<5;i++){ ch=getchar(); //甯﹀洖鏄撅紝涓旂瓑寰呮寜Enter閿崲琛 printf("%c",ch);} return 0;} ...
  • C璇█閲実etchar()浣滅敤?
    绛旓細骞跺甫鍥炴樉銆俫etchar()鍑芥暟绛夊緟杈撳叆鐩村埌鎸夊洖杞︽墠缁撴潫锛屽洖杞﹀墠鐨勬墍鏈夎緭鍏ュ瓧绗﹂兘浼氶愪釜鏄剧ず鍦ㄥ睆骞曚笂锛屼絾鍙湁绗竴涓瓧绗︿綔涓鍑芥暟鐨杩斿洖鍊笺getchar鍑芥暟鍘熷瀷濡備笅锛氬嚱鏁版牸寮忥細int getchar(void);鍔 鑳斤細浠庢爣鍑嗚緭鍏ヨ澶囪鍙栦笅涓涓瓧绗 杩 鍥 鍊硷細杩斿洖鎵璇诲瓧绗︼紝鍚﹀垯杩斿洖-1 ...
  • c璇█getchar鐨鐢ㄦ硶
    绛旓細璁稿鍒濆鑰呴兘涔犳儻鐢 char 鍨嬪彉閲忔帴鏀 getchar銆getc锛宖getc 绛鍑芥暟鐨勮繑鍥炲硷紝鍏跺疄杩欎箞鍋氭槸涓嶅鐨勶紝骞朵笖闅愬惈鐫瓒充互鑷村懡鐨勯敊璇俫etchar()鏈鍏稿瀷鐨勭▼搴忎篃灏卞嚑琛屼唬鐮佽屽凡銆備笅闈㈡垜浠潵鐪嬬湅c璇█getchar鐨勭敤娉曘備竴銆乬etchar鐨勪袱鐐规荤粨锛1.getchar鏄互琛屼负鍗曚綅杩涜瀛樺彇鐨勩傚綋鐢╣etchar杩涜杈撳叆鏃讹紝濡傛灉杈撳叆鐨...
  • c璇█getchar()鐨鍔熻兘鏄粈涔?
    绛旓細getchar()鍦C绋嬪簭涓鐨勫姛鑳芥槸鎺ユ敹涓涓瓧绗︺俫etchar()鍦–绋嬪簭涓殑鍔熻兘鏄帴鏀朵竴涓瓧绗︼紝褰撴垜浠湪杩炵画杈撳叆瀛楃鐨勬椂鍊檊etchar()浼氱粰浣犳剰鎯充笉鍒扮殑鏁堟灉銆俫etchar()鏄痵tdio.h涓殑搴鍑芥暟锛屽畠鐨勪綔鐢ㄦ槸浠巗tdin娴佷腑璇诲叆涓涓瓧绗︼紝涔熷氨鏄锛屽鏋渟tdin鏈夋暟鎹殑璇濅笉鐢ㄨ緭鍏ュ畠灏卞彲浠ョ洿鎺ヨ鍙栦簡銆c璇█鐨鐗圭偣 C...
  • 濡備綍鐢C璇█缂栧啓getchar()鍑芥暟?
    绛旓細浠g爜濡備笅锛歩nclude<stdio.h> include<ctype.h> int main(void){ char ch;int index;ch = getchar(); //璇诲叆涓涓瓧绗﹀瓨鍏h ch = tolower(ch); //杞崲涓哄皬鍐欏瓧姣 index = ch - 'a' + 1; //璁$畻搴忓彿 printf("%d\n", index);return 0;} ...
  • getchar鍦c璇█涓鏄粈涔堟剰鎬?
    绛旓細鍑洪敊杩斿洖EOF銆傝鍑芥暟澹版槑鍦╯tdio.h澶存枃浠朵腑锛屼娇鐢ㄧ殑鏃跺欒鍖呭惈stdio.h澶存枃浠躲傞氬父锛屽彲浠ュ埄鐢getchar鍑芥暟璁╃▼搴忚皟璇曡繍琛岀粨鏉熷悗绛夊緟缂栫▼鑰呮寜涓嬮敭鐩樻墠杩斿洖缂栬緫鐣岄潰銆俢h=getchar()锛涚瓑寰呬粠閿洏涓婅緭鍏ヤ竴涓瓧绗︼紝putchar(ch)锛涜緭鍑烘瀛楃锛屼粬浠寘鍚湪澶存枃浠躲#include<stdio.h>涓
  • C璇█閲鐨getchar()鎬庝箞鐢?
    绛旓細getchar()鏄c璇█涓鐨勪竴涓鍑芥暟锛屽彲浠ョ敤瀹冩潵璧嬩竴涓瓧绗︾殑鍊笺備緥濡:char a;a=getchar();褰撲綘鍦ㄩ敭鐩樹笂杈撳叆涓涓瓧绗﹀悗鎸夊洖杞;(杈撳叆u)閭d箞瀛楃鍙橀噺a鐨勫煎氨鏄'u'浜.main() { char c; c=getchar(); /*浠庨敭鐩樻帴鏀朵竴涓瓧绗︼紝鍙兘涓涓紝澶氫簬涓涓叾浣欎綔搴*/ putchar(c); } 杩樺彲浠ヨ繖鏍风敤锛 ...
  • 扩展阅读:延时c# ... c语言取绝对值怎么写 ... c语言gets 的用法 举例 ... getch正确使用 ... 中英文自动翻译器 ... c语言getchar读取范围 ... c语言getchar窗口关闭 ... 回文数python编程函数 ... c语言中getch如何撤退一步 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网