对于scanf的使用一点体会心得
生活随笔
收集整理的這篇文章主要介紹了
对于scanf的使用一点体会心得
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天非常的突發氣象的在acm上面做了一下題目,悲劇的是多年不用c的人忘記了怎么樣的使用scanf了,今天還學到了一點東西。
題目里面提示了輸入兩個數,規定第1~6列是第一個數的范圍,第8~9列是第二個數的范圍。然后第一個數字可能沒有6位,而第二個數字可能沒有兩位,那么連個數字中間可能出現,多個空格,而我們一般的使用scanf的方式對于其參數的規定是"%d %d"中間加空格的方式來得到數據的,比如說scanf("%d %d", &x, &y);而這種方式獲得的數據規定了scanf的數據的結束的方式,看到空格就結束,而對于上面的兩個數據,中間的空格可能很多,當第一個數據獲得了以后,第二個數據獲取的時候,可能在數據前有空格,而這個給%d的話會由于出錯而結束。
而對于scanf函數的方式,獲取內容有一個特點,對于scanf("%d%d",&x,&y),中間沒有規定結束的符號的時候,scanf是根據自己的方式來結束的,那么這幾種方式是
① 遇空格、“回車”、“跳格”鍵。? ② 遇寬度結束。? ③ 遇非法輸入。 因此,對于中間空格很多的時候,第一個數直接賦值給了x,然后遇到空格,說明沒有數據,直到遇到第二個數據的時候進行賦值,然后就遇到了回車 結束了。這對與%s 也是對的. 實例1 1 #include <stdio.h>2 #include <math.h>
3 #include <stdlib.h>
4 #include <malloc.h>
5 #include <string.h>
6 ?int main(int argc, char argv[])
7 {
8 char *r;
9 int n;
10 r = (char *)malloc(1024*sizeof(char));
11 memset(r, '\0', 1024);
12 if(scanf("%s%d", r, &n) != 2)return 0;
13 printf("%s,%d\r\n", r, n);
14 return 0;
15 }
?
輸入數據是 95.123 12或者是95.123 12等等中間無論多少空格的時候 得到的結果是 95.123,12轉載于:https://www.cnblogs.com/onlylittlegod/archive/2010/12/01/1893561.html
總結
以上是生活随笔為你收集整理的对于scanf的使用一点体会心得的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 显示桌面,原来这么简单的
- 下一篇: 乱