getchar()与gets()的区别?
要从键盘读入含有空格字符的字符串,应该用gets()函数。
getc()与getchar()语句都是读取单个字符的,不能用于字符串的读入。而gets()与scanf()语句都可以读取字符串,但是区别在于:scanf()语句不能读空格,一遇到空格则自动结束,用“空格”区别不同的字符串;要读含有空格的字符串则只有gets()函数。
扩展资料
gets()函数用于从缓冲区中读取字符串,其原型如下:char *gets(char *string);
gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止,最后加上NULL作为字符串结束。所读取的字符串暂存在给定的参数string中。
【返回值】若成功则返回string的指针,否则返回NULL。
注意:由于gets()不检查字符串string的大小,必须遇到换行符或文件结尾才会结束输入,因此容易造成缓存溢出的安全性问题,导致程序崩溃,可以使用fgets()代替。
绛旓細杩欒偗瀹氭槸鍦getchar鍓嶅凡缁忔湁浜嗚緭鍏ヨ鍙ヤ簡锛岃緭鍏ユ椂鎶婃帴鏀跺懡浠'\n'閬楃暀鍦ㄤ簡杈撳叆缂撳啿鍖洪噷锛岀敤getchar鏉ュ惛鏀舵帀杩欎釜'\n'锛屼笉鐒gets閬囧埌'\n'鍚庤涓鸿緭鍏ュ凡缁忕粨鏉熶簡锛屼粠鑰屽緱涓嶅埌浠庨敭鐩樿緭鍏ョ殑瀛楃涓蹭簡銆
绛旓細涓銆侀棶棰樻弿杩帮細浠庨敭鐩樿緭鍏ヤ竴涓瓧绗︿覆缁檚tr鍜涓涓瓧绗︾粰c锛屽垹闄tr涓殑鎵鏈夊瓧绗骞惰緭鍑哄垹闄ゅ悗鐨勫瓧绗︿覆str銆1銆佽緭鍏ワ細绗竴琛屾槸涓涓瓧绗︿覆锛 绗簩琛屾槸涓涓瓧绗︺2銆佽緭鍑猴細鍒犻櫎鎸囧畾瀛楃鍚庣殑瀛楃涓层備簩銆佽璁℃濊矾锛1銆 鍚屾彃鍏ラ棶棰橈紝瀹氫箟涓や釜瀛楃鏁扮粍a锛宐銆備互鍙婃爣蹇楀垹闄や綅缃殑int鍨媝os銆2銆佺敤gets鍑芥暟...
绛旓細杩欓噷getchar鏄鐞 鍓嶉潰杈撳叆鍙风爜鍚庣殑鍥炶溅绗︾殑闂銆傚鏋滄病鏈夎繖涓猤etchar锛岄偅scanf鍚庯紝浼氭湁涓涓洖杞︾瀛樺湪杈撳叆娴佺殑缂撳啿鍖哄唴锛岄偅涔堝啀浣跨敤gets鐨勬椂鍊欙紝灏变細鍙栧緱杩欎釜鍥炶溅绗︼紝gets璁や负杈撳叆缁撴潫锛屽氨涓嶄細璁╃敤鎴疯緭鍏ュ鍚嶄簡銆
绛旓細getchar():鐢ㄦ埛杈撳叆鐨勫瓧绗﹁瀛樻斁鍦ㄩ敭鐩樼紦鍐插尯涓紝鐩村埌鐢ㄦ埛鎸夊洖杞︿负姝紝getchar鍑芥暟鐨勮繑鍥炲兼槸鐢ㄦ埛杈撳叆鐨勭涓涓瓧绗︾殑ASCII鐮,濡傚嚭閿欒繑鍥-1,涓斿皢鐢ㄦ埛杈撳叆鐨勫瓧绗﹀洖鏄惧埌灞忓箷.濡傜敤鎴峰湪鎸夊洖杞︿箣鍓嶈緭鍏ヤ簡涓嶆涓涓瓧绗,鍏朵粬瀛楃浼氫繚鐣欏湪閿洏缂撳瓨鍖轰腑,绛夊緟鍚庣画getchar璋冪敤璇诲彇.涔熷氨鏄,鍚庣画鐨刧etchar璋冪敤涓嶄細...
绛旓細gets getchar閮芥槸鎺ュ彈杈撳叆鐨勶紝涓嶅悓鍦ㄤ簬锛gets鍙互鎺ュ彈瀛楃涓诧紝鑰実etchar涓娆″彧鎺ュ彈鍗曚釜瀛楃銆俿trlen鍑芥暟姹傜殑鏄瓧绗︿覆鐨勯暱搴︼紙涓嶅寘鎷'\0'锛,鍙︿竴涓浉浼煎姛鑳界殑杩愮畻绗︽槸sizeof锛屽尯鍒槸瀹冨寘鍚'\0',鎵浠ュ鐩稿悓鐨勫瓧绗︿覆锛宻izeof姣攕trlen澶1銆
绛旓細娉ㄦ剰锛getchar()鍑芥暟姣忔鍙鍙栦竴涓瓧绗︼紝骞跺皢鍏惰浆鍖栦负鏁存暟鍊艰繑鍥炪傚洜姝わ紝濡傛灉闇瑕佽鍙栦竴琛屽瓧绗︿覆锛岄渶瑕佷娇鐢ㄥ惊鐜粠杈撳叆涓鍙栧瓧绗︼紝鐩村埌閬囧埌鎹㈣绗︿负姝紙鍗宠緭鍏ュ洖杞︼級銆傚疄闄呬笂锛岃繖涔熸槸getchar()鍑芥暟甯哥敤鐨勬柟寮忎箣涓锛屽彲浠ョ敤鏉ヨ緭鍏ヤ笉瀹氶暱鐨勫瓧绗︿覆銆傚湪C璇█涓紝鏈夊緢澶氫笌杈撳叆杈撳嚭鐩稿叧鐨勫嚱鏁帮紝濡俿canf()銆gets...
绛旓細putchar鍑芥暟鍙兘鐢ㄤ簬鍗曚釜瀛楃鐨勮緭鍑猴紝涓斾竴娆″彧鑳借緭鍑轰竴涓瓧绗︺getchar鍑芥暟鍙兘鐢ㄤ簬鍗曚釜瀛楃鐨勮緭鍏ワ紝涓娆¤緭鍏ヤ竴涓瓧绗︺傜▼搴忕殑鍔熻兘鏄緭鍏ヤ竴涓瓧绗︼紝鏄剧ず涓涓瓧绗︼紝鍥炶溅鎹㈣锛屽啀杈撳叆骞舵樉绀轰竴涓瓧绗︺傝岃繍琛屾椂瀛楃鏄繛缁緭鍏ョ殑锛岃繍琛岀粨鏋滃嵈鏄纭殑锛岃繖鏄洜涓鸿緭鍏ュ瓧绗﹀悗锛屽畠浠殏瀛樹簬閿洏鐨勭紦鍐插尯涓紝鐒跺悗鐢眊et...
绛旓細gets鐢ㄤ簬杈撳叆涓涓插瓧绗︼紝鍙互杈撳叆绌烘牸锛岃緭鍏ュ畬姣昰ets浼氳嚜鍔ㄧ粰杈撳叆鐨勫瓧绗︿覆鍚庨潰琛'\0'锛涘ご鏂囦欢string.h銆俫etchar鐢ㄤ簬杈撳叆鍗曚釜瀛楃锛屽崟鍙getchar()杩樻湁娓呯┖杈撳叆缂撳瓨鐨勪綔鐢ㄣ傚ご鏂囦欢stdio.h銆俧gets鐢ㄤ簬浠庢枃浠朵腑璇诲彇涓涓插瓧绗︼紝璇诲彇鍒扮殑涓暟鐢变紶鍏ュ弬鏁板喅瀹氾紝鍙﹀fgets璇诲彇鐨勬椂鍊欓亣鍒'\n'涔熶細鍋滄銆傚ご鏂囦欢stdio.h銆
绛旓細鎴栬卲uts(str);娉ㄦ剰锛(1)浣跨敤scanf杈撳叆瀛楃涓蹭竴瀹氫笉鑳藉啓鎴愨渟canf("%s",&str);鈥濓紝鍥犱负str鏄暟缁勫悕锛屼綔涓轰竴涓湴鍧瀛樺湪锛屾槸涓嶈兘鍐嶈繘琛屸&鈥濊繍绠楃殑銆(2)gets();鍜宲uts();涓娆″彧鑳借緭鍏ヤ竴涓瓧绗︽暟缁勶紝姣斿鍐欐垚鈥済ets(str1,str2);鈥濊屾兂涓娆¤緭鍏ヤ袱涓瓧绗︿覆锛岄偅鏄笉琛岀殑銆傝getchar鏈変竴涓猧nt鍨嬬殑...
绛旓細浣gets()鍑芥暟灏嗘帴鏀惰緭鍏ョ殑鏁翠釜瀛楃涓茬洿鍒板洖杞︿负姝俻utchar鍑芥暟鍙兘鐢ㄤ簬鍗曚釜瀛楃鐨勮緭鍑猴紝涓斾竴娆″彧鑳借緭鍑轰竴涓瓧绗︺getchar鍑芥暟鍙兘鐢ㄤ簬鍗曚釜瀛楃鐨勮緭鍏ワ紝涓娆¤緭鍏ヤ竴涓瓧绗︺傜▼搴忕殑鍔熻兘鏄緭鍏ヤ竴涓瓧绗︼紝鏄剧ず涓涓瓧绗︼紝鍥炶溅鎹㈣锛屽啀杈撳叆骞舵樉绀轰竴涓瓧绗︺傝岃繍琛屾椂瀛楃鏄繛缁緭鍏ョ殑锛岃繍琛岀粨鏋滃嵈鏄纭殑锛岃繖鏄洜涓...