程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言 gets()和scanf()函數的區別

C語言 gets()和scanf()函數的區別

編輯:關於C
scanf( )函數和gets( )函數都可用於輸入字符串,但在功能上有區別。若想從鍵盤上輸入字符串"hi hello",則應該使用__gets__函數。   gets可以接收空格;而scanf遇到空格、回車和Tab鍵都會認為輸入結束,所有它不能接收空格。   char string[15]; gets(string); /*遇到回車認為輸入結束*/   scanf("%s",string); /*遇到空格認為輸入結束*/   所以在輸入的字符串中包含空格時,應該使用gets輸入。   scanf和gets獲取字符串時的區別   在C語言中,能構獲取字符串的函數至少有兩個:   1.scanf()   所在頭文件:stdio.h   語法:scanf("格式控制字符串",變量地址列表);   接受字符串時:scanf("%s",字符數組名或指針);   2.gets()   所在頭文件:stdio.h   語法:gets(字符數組名或指針);   兩者在接受字符串時:   1.不同點:   scanf不能接受空格、制表符Tab、回車等;   而gets能夠接受空格、制表符Tab和回車等;   2.相同點:   字符串接受結束後自動加'\0'。   例1:   #include <stdio.h>   main()   {   char ch1[10],ch2[10];   scanf("%s",ch1);   gets(ch2);   }   依次鍵入asd空格fg回車,asd空格fg回車,則ch1="asd\0",ch2="asd fg\0"。   例2:   #include <stdio.h>   main()   {   char ch1[10],ch2[10],c1,c2;   scanf("%s",ch1);   c1=getchar();   gets(ch2);   c2=getchar();   }   依次鍵入asdfg回車,asdfg回車,則ch1="asdfg\0",c1='\n',ch2="asdfg\0",c2需輸入。   scanf :當遇到回車,空格和tab鍵會自動在字符串後面添加'\0',但是回車,空格和tab鍵仍會留在輸入的緩沖區中。   gets:可接受回車鍵之前輸入的所有字符,並用'\n'替代 '\0'.回車鍵不會留在輸入緩沖區中   gets()用到讀取字符串,用回車結束輸入    scanf()可以讀取所有類型的變量
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved