scanf,getchar,gets分别输入字符串有什么区别?详细点哦,最好有例子!
其实用scanf("%s",);和gets();本质上没有什么区别,都是将字符数据输入到制定的内存单元中。假设定义有字符数组(C语言把字符串按字符数组处理)str[30],那么我们向里面输入字符就可以为:
scanf("%s",str);
gets(str);
他们都可以这样输出:
printf("%s",str);
或者puts(str);
注意:
(1)使用scanf输入字符串一定不能写成“scanf("%s",&str);”,因为str是数组名,作为一个地址存在,是不能再进行“&”运算的。
(2)gets();和puts();一次只能输入一个字符数组,比如写成“gets(str1,str2);”而想一次输入两个字符串,那是不行的。
而getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
int
c;
while
((c
=
getchar())
!=
'\n');
printf("%c",c);
绛旓細鍥犱负scanf("%c",&ch);鍙帴鏀朵竴涓瓧绗︼紝浼氭妸杈撳叆鐨'\n'鐣欏湪杈撳叆缂撳啿鍖猴紱鑰'\n'涔熸槸瀛楃锛屽悗闈㈢殑杈撳叆璇彞浼氭妸瀹冩帴鏀惰屾敹涓嶅埌浣犺緭鍏ョ殑鏈夌敤瀛楃锛屾墍浠ヤ細鍑洪敊銆傚啓鎴恠canf("%c",&ch);getchar();鍚巊etchar();浼氭妸閬楃暀鍦ㄧ紦鍐插尯涓殑閭d釜'\n'鎺ユ敹鎺夛紝灏变笉浼氬嚭閿欎簡銆備絾浣爏canf("%c",&ch);ch...
绛旓細getchar(瀛楃杈撳叆鍑芥暟锛夛紝瀹冪殑浣滅敤鍙槸浠庣粓绔緭鍏ヤ竴涓瓧绗︼紝娌℃湁鍙傛暟,鍑芥暟鐨勫煎氨鏄粠杈撳叆璁惧涓緱鍒扮殑瀛楃;puhchar()鍚岀悊锛屼篃鍙兘鍚戠粓绔緭鍑轰竴涓瓧绗;濡傦細include <stdio.h> main(){ char c;c=getchar();putchar(c);} 杩愯缁撴灉锛歛 鍥炶溅 a scanf()鍜宲rinf()鏄牸寮忚緭鍏/杈撳嚭鍑芥暟锛屽叾鍙傛暟鏄...
绛旓細1閭d釜鍥炶溅绗︽病鏈変即闅忕潃scanf璇彞鐨勭粨鏉熻屾秷澶憋紱2scanf璁や负鍥炶溅绗︼紝绌烘牸绗︽槸鍒嗛殧绗︼紝浼氳嚜鍔ㄨ烦杩囷紝鍥犺屼笉浼氬奖鍝嶄笅涓涓猻canf銆3getchar鏄鍏ヤ竴涓瓧绗︼紝涓嶇鏄笉鏄垎闅旂锛岄兘涓嶄細璺宠繃銆
绛旓細scanf:浠庢爣鍑嗚緭鍏ユ祦stdio (鏍囧噯杈撳叆璁惧锛屼竴鑸槸閿洏)涓鍐呭鐨勯氱敤瀛愮▼搴忥紝鍙互璇存槑鐨勬牸寮忚鍏ュ涓瓧绗︼紝骞朵繚瀛樺湪瀵瑰簲鍦板潃鐨勫彉閲忎腑銆俿canf()鍑芥暟杩斿洖鎴愬姛璧嬪肩殑鏁版嵁椤规暟锛岃鍒版枃浠舵湯灏惧嚭閿欐椂鍒欒繑鍥濫OF銆getchar:浠巗tdio娴佷腑璇诲瓧绗︼紝鐩稿綋浜巊etc(stdin锛夛紝瀹冧粠鏍囧噯杈撳叆閲岃鍙栦笅涓涓瓧绗︺傝繑鍥炵被鍨嬩负int鍨嬶紝...
绛旓細C璇█涓璼tdin娴佺殑鐢ㄦ硶:stdin鏄疌璇█涓爣鍑嗚緭鍏ユ祦锛屼竴鑸敤浜庤幏鍙栭敭鐩樿緭鍏ュ埌缂撳啿鍖洪噷鐨勪笢瑗裤傝闂畇tdin锛屽彲鐢╯tdio.h涓彁渚涚殑浠ヤ笅鍑犱釜鍑芥暟锛(1)scanf銆getchar鏉ヤ粠stdin娴佷腑鑾峰彇鎸囧畾鐨勬暟鎹俿canf鏍规嵁绗竴涓弬鏁版寚瀹氱殑鏍煎紡绗﹀皢鏁版嵁璇诲叆鍚庣画鍙傛暟鎸囧畾鐨勫唴瀛樹綅缃腑锛沢etchar浠巗tdin娴佷腑璇诲彇涓涓瓧绗﹀苟杩斿洖銆(2)...
绛旓細getchar()鏈潵灏辨槸鎺ユ敹涓涓瓧绗︼紝鈥淎鈥濇槸涓涓瓧绗︼紝鍥炶溅涔熸槸涓涓瓧绗︼紝涓嶈寰楀悧鈥淺n鈥濊浆涔夊瓧绗︼紝鎵浠ヨ繖灏辨槸getchar()鐨勮緭鍏ワ紝涓涓竴涓殑杈撳叆瀛楃锛涘叿浣撶敤娉scanf 鏍煎紡杈撳叆鍑芥暟 鍑芥暟浣滅敤锛氭寜鐓у彉閲忓湪鍐呭瓨鐨勫湴鍧灏嗗彉閲忓煎瓨杩涘幓銆備竴鑸牸寮忥細scanf锛堟牸寮忔帶鍒讹紝鍦板潃琛ㄥ垪锛夊叾涓紝鏍煎紡鎺у埗锛歞:浠ュ甫绗﹀彿鐨勫崄...
绛旓細绗簩锛屼娇鐢scanf鍙互涓娆¤緭鍏ュ涓瓧绗︿覆锛屽scanf("%s%s%s",s1,s2,s3)锛屼粠閿洏杈撳叆鏃朵竴琛屼唬琛ㄤ竴涓瓧绗︿覆銆2.gets(s)涓娆″彧鑳借緭鍏ヤ竴涓瓧绗︿覆锛屼絾瀹冨彲浠ユ帴鍙楃┖鏍煎拰TAB鍋氫负瀛楃涓茬殑鏈夋晥瀛楃锛岄亣鍥炶溅绗︾粓姝㈡帴鏀躲3.getchar鍑芥暟鏄瓧绗﹀嚱鏁帮紝鍙兘鐢ㄦ潵鎺ュ彈1涓瓧绗︼紝鍙互鐢╟h=getchar()鏉ョ粰char鍨嬪彉閲廲h...
绛旓細include<stdlib.h> include<string.h> define N 8 void main(){ int i,m;char g[N];printf("m=");scanf("%d",&m);//printf("ok");getchar();printf("please input vexs(椤剁偣鍚嶇О):\n");for(i=0;i<N;i++){ g[i]=getchar();getchar();//鍚炴帀鎹㈣绗 printf("%c\n",g...
绛旓細鍓嶄袱涓棶棰樿緭鍑虹粨鏋滄槸涓鏍风殑銆傚綋鐒讹紝ch=getchar()锛涘簲鏀逛负ch[i]=getchar();甯︾┖鏍兼椂锛岃鎶婃帶鍒跺惊鐜彉閲忔敼涓20锛涘悗闈㈢殑闂搴旇鏄scanf锛堚%s鈥濓紝str锛夛紱涓巊ets锛坰tr锛夛紱鐨勫尯鍒紝姝ゆ椂锛宻canf涓┖鏍笺佸洖杞︺佽烦鏍奸兘琛ㄧず缁撴潫锛岃実ets涓负涓涓瓧绗 ...
绛旓細getchar 浠巗tdio娴佷腑璇诲瓧绗︼紝鐩稿綋浜巊etc(stdin锛夛紝瀹冧粠鏍囧噯杈撳叆閲岃鍙栦笅涓涓瓧绗︺傝繑鍥炵被鍨嬩负int鍨嬶紝杩斿洖鍊间负鐢ㄦ埛杈撳叆鐨凙SC鈪$爜锛屽嚭閿欒繑鍥-1銆俫etchar鑾峰彇 鐨勬槸瀛楃锛岃屼笉鏄瓧绗︿覆銆傚嚱鏁 scanf() 鏄粠鏍囧噯杈撳叆娴乻tdio (鏍囧噯杈撳叆璁惧锛屼竴鑸槸閿洏)涓鍐呭鐨勯氱敤瀛愮▼搴忥紝鍙互璇存槑鐨勬牸寮忚鍏ュ涓瓧绗︼紝...