1. 程式人生 > >scanf("%s",s)與gets(s)

scanf("%s",s)與gets(s)

結束 main string nbsp class 包括 制表符 也會 void

 1 #include <stdio.h>
 2 void fun(char s[])
 3 {int i=0;
 4 while(s[i]!=\0)
 5 {i++;}
 6 printf("%d",i);}
 7 void main()
 8 {char s[81];
 9 scanf("%s",s);
10 fun(s);}

1、 gets功能為讀入一行,並將換行符轉換為字符串結束符。
2、 scanf("%s",s);讀入時,遇到空白字符,包括空格,制表符,換行符時均會停止輸入。

從功能上可以看出不同之處:
1 終止條件不同。gets只有遇到\n時才會結束輸入,而scanf遇到空格或制表符時,也會結束輸入。
比如輸入"test string\n"。
用gets得到的字符串為"test string", 二用scanf得到的是"test"。

2 終止後,對終止字符處理不同。
比如輸入為"test\nabcd"。
執行gets後,\n不會留在緩沖區中,即這時調用getchar得到的字符是‘a‘。
執行scanf後,\n會留在緩沖區,這時調用getchar得到的字符是‘\n‘。

scanf("%s",s)與gets(s)