为什么还要getchar()? 为什么要有一个ch=getchar()还要一个getchar...
\u4e3a\u4ec0\u4e48\u8981getchar()?getchar()\u51fd\u6570\u8ba9\u7a0b\u5e8f\u8c03\u8bd5\u8fd0\u884c\u7ed3\u675f\u540e\u7b49\u5f85\u7f16\u7a0b\u8005\u6309\u4e0b\u952e\u76d8\u624d\u8fd4\u56de\u7f16\u8f91\u754c\u9762\uff0c\u7528\u6cd5\uff1a\u5728\u4e3b\u51fd\u6570\u7ed3\u5c3e\uff0creturn 0\uff1b\u4e4b\u524d\u52a0\u4e0agetchar()\uff1b
\u8fd9\u4ee3\u7801\u771f\u591f\u5783\u573e\u7684\u3002\u3002\u3002
\u6211\u5012\uff0c\uff0c\u4e0d\u8fc7\uff0c\u8fd8\u662f\u8ddf\u4f60\u89e3\u91ca\u4e00\u4e0b\u5427\uff0c\uff0c\uff0c\u524d\u9762\u7684\u8bf4\u5bf9\u4e86\uff0c\uff0c\u7b2c\u4e8cGETCHAR \u662f\u8ba9\u7a0b\u5e8f\u6682\u505c\u4e00\u4e0b\uff0c\u5f53\u7a0b\u5e8f\u8fd0\u884c\u5230GETCHAR\u7684\u65f6\u5019\uff0c\u7a0b\u5e8f\u4f1a\u8fdb\u5165\u7b49\u5f85\u72b6\u6001\uff0c\u7b49\u5f85\u7528\u6237\u7684\u8f93\u5165\uff0c\u5f53\u7528\u6237\u8f93\u5165\u540e\u7a0b\u5e8f\u5c31\u4f1a\u7ee7\u7eed\u5f80\u4e0b\u8fd0\u884c\u3002\u3002\u7b2c\u4e8c\u4e2aGETCHAR\u6ca1\u6709\u5b9e\u5728\u7684\u610f\u4e49\uff0c\u53ea\u662f\u4e3a\u4e86\u6682\u505c\u4e00\u4e0b\uff0c\u4e0d\u8981\u4e5f\u53ef\u4ee5\u8fd0\u884c\u3002\u3002\u3002\u3002
其实这份代码不加getchar()也可以正常运行,因为输入的两个都是整形,而在输入整形的时候,会忽略之前的空格、回车,并且以之后的空格、回车会输入整形结束的标志。
如果是下面的这种情况,就需要getchar()了
int a;
char c;
scanf("%d", &a);
scanf(%c", &c);
而输入是:1001 敲回车 @ 敲回车
先输入整形,然后输入字符,如果在第一个scanf之后,没有getchar的话,那么c接收的到是回车字符,而不是字符'@'
scanf("%d", &a);
getchar();
scanf(%c", &c)
getchar()用于获取用户输入一个字符,这里可以删除。
程序错的,把getchar()拿掉。
绛旓細windows鐨勫洖杞︽槸\r\n鎸囩殑鏄啓鍏ユ枃浠剁殑鏃跺欙紝褰撲互鏂囨湰妯″紡鎵撳紑鏂囦欢锛屽悜鏂囦欢鍐欏叆\n鏃讹紝浼氬啓鍏r\n涓や釜瀛楃,璇绘枃浠舵椂\r\n鍙堜細琚浆鎹负\n. 涓嶆秹鍙婃枃鏈枃浠舵搷浣滐紝鍥炶溅灏辨槸涓涓瓧绗n銆
绛旓細getchar()浠巗tdio娴佷腑璇诲瓧绗︼紝鐩稿綋浜巊etc(stdin锛夛紝瀹冧粠鏍囧噯杈撳叆閲岃鍙栦笅涓涓瓧绗︺俢 = getchar(); c鑾峰緱杈撳叆鐨勫瓧绗︽垨鏁板瓧銆 濡傛灉杈撳叆鐨勬槸鏁板瓧锛屽畠浼氫互ASCII涓哄噯锛岃浆鎹㈡垚鐩稿簲鐨勫瓧绗︺俻rintf("瀛楃%c = 鏁板瓧 %d",c,c);涓嬮潰鏄皢鏁板瓧杞崲涓哄瓧绗︿覆(浣犱笉涓瀹氱敤鐨勪笂):C璇█鎻愪緵浜嗗嚑涓爣鍑嗗簱鍑芥暟...
绛旓細getchar();鐢╣etchar涓嶅ソ鍘熷洜鏄畠鍚告敹鍥炶溅锛屼篃灏辨槸浣犵涓娆etchar鍚庯紝鍚告敹鐨勬槸浣犲嚭鍏ョ殑瀛楃锛屼絾浣犲湪杈撳叆鐨勬椂鍊欒繕鏈変竴涓細杞︾殑锛屽洜姝ゅ洖杞︿細琚玦f鍚庨潰鐨刧etchar鍚告敹锛屽鏋滃幓鎺夌殑璇濓紝灏卞彉鎴恑f鍚庣殑绗簩涓猤etchar鎶婄┖鏍煎惛鏀朵簡銆傘傘傦紝鍥犳again鐨勫兼垚浜='\n'...
绛旓細鐗瑰埆鏄紝鍙兘鏃犳硶瀹逛笅EOF銆傚彟澶栵紝Koenig杩樻寚鍑猴紝濡傛灉灏唃etchar鐨勮繑鍥炲艰祴鍊煎悗杩樿鍙備笌鍒ゆ柇锛岄偅涔堜篃搴旇浣跨敤int鍨嬬殑鍙橀噺锛屽锛歩nclude <stdio.h> main(){ int c; /* 杩欓噷濡傛灉鐢╟har c鍦ㄤ竴浜涚幆澧冧笅浼氭寰幆鍑洪敊 */ while ( (c = getchar()) != EOF )putchar(c);} ...
绛旓細getchar()寰楀埌鎸夐敭鐨勫,鏍规嵁杩欎釜鍊煎垽鏂竴涓嬪氨濂戒簡,濡傛灉浣瑕瀹炴椂鐩戞帶,閭e氨鏄鐢ㄩ敭鐩橀挬瀛愬幓鐩戞帶鎸夐敭娑堟伅浜 濡傛灉浣犺瀹炴椂鐩戞祴閿洏灏卞彧鑳界敤閿洏閽╁瓙,浣跨敤鍥炶皟鍑芥暟鏉ュ搷搴,杩欐槸C++,win32缂栫▼鐨勬蹇典簡,濡傛灉浣犲彧鏄湪浣犻渶瑕佺殑鍦版柟妫娴嬩竴涓嬮敭鐩樼殑鎸夐敭,getchar()灏卞彲浠ヤ簡鍟,杩斿洖涓涓敭鐩樿緭鍏ョ殑ASCII鐮佸,浣犲搴...
绛旓細int getchar(void);getchar()浠庢帶鍒跺彴璇诲彇涓涓瓧绗︼紝骞跺洖鏄俱傚綋绋嬪簭璋冪敤getchar鏃讹紝绋嬪簭灏辩瓑鐫鐢ㄦ埛鎸夐敭銆傜敤鎴疯緭鍏ョ殑瀛楃琚瓨鏀惧湪閿洏缂撳啿鍖轰腑锛岀洿鍒扮敤鎴锋寜鍥炶溅涓烘(鍥炶溅瀛楃涔熸斁鍦ㄧ紦鍐插尯涓)銆傚綋鐢ㄦ埛閿叆鍥炶溅涔嬪悗锛実etchar鎵嶅紑濮嬩粠stdio娴佷腑姣忔璇诲叆涓涓瓧绗︺俫etchar鍑芥暟鐨勮繑鍥炲兼槸鐢ㄦ埛杈撳叆鐨勭涓涓瓧绗...
绛旓細2锛 scanf涓殑 %s\n \n灏辨槸澶氫綑锛佸鏋滃甫鏈塡n锛岄偅涔堜綘杈撳叆鏃瑕鎸変袱娆″洖杞︼紒锛佽繖涓鑸笉鎺ㄨ崘銆3锛実etchar浣嶇疆涓嶅锛佸弬鑰冧笅闈㈠凡淇敼鐨勶細include "stdio.h"void main(){ char code1[128],code2[128],code3[128],c,i;do { printf("please input code\n");scanf("%s",code1);getchar(...
绛旓細濂界幇鍦ㄦ潵鐪嬩竴涓嬶紝瑕浣垮惊鐜笉鎴愮珛銆俢搴旇=0.涔熷氨鏄痝echar()=='a'涓嶆垚绔嬨傝繖杈规垜浠鎰忚瘑鍒颁竴鐐 鎴戜滑閮芥槸杩欐牱杈撳叆鐨 涓涓瓧绗 鍥炶溅閿 杩欎釜鏃跺欏垎涓ょ鎯呭喌 1.濡傛灉浣犵殑瀛楃鏄痑锛岄偅涔堬紝璇锋敞鎰忎綘鍦ㄨ緭鍏鐨勬椂鍊欎篃鎸夊洖杞︿簡銆傚洖杞﹂敭涔熸槸涓涓瓧绗︼紝鎵浠ユ鏃getchar!='a'銆傞偅涔堜粬璺冲嚭寰幆 2濡傛灉浣犵殑瀛楃...
绛旓細scanf_s("%c",&C2)鏄皢涓婁竴涓 scanf_s()鎵娈嬬暀鐨勫洖杞﹁鍙栦簡 C2=getchar()鎵嶆槸鑾峰彇杈撳叆鐨凜2瀛楃
绛旓細鍙兘鏈1涓紝涓斿寘鎷櫘閫氬瓧绗﹀拰鍥炶溅绌烘牸绛夌瓑銆傜ず渚嬪涓嬶細杈撳叆O銆佸洖杞︺丳锛岃緭鍑哄涓娿傜壒鍒鏄庯紝濡傛灉鏄竴涓媐or寰幆璇彞锛屽洜涓鸿緭鍏ヤ細鍏ㄩ儴杩涘叆缂撳瓨锛屽張for寰幆鍒ゆ柇鐨勬槸涓嶈緭鍏ュ洖杞︼紝鎵浠ワ紝璇ュ惊鐜鍙ヤ細閫愬瓧璇诲彇骞惰緭鍑烘瘡涓涓瓧绗︼紝瀹炶川杩樻槸鍙鍙栦簡涓涓瓧绗︼紝鐩村埌閬囧埌鍥炶溅缁堟锛...