本節課程筆記:
一是對多個變量進行賦值,二是對非法輸入的值做正確處理(處理方式了解即可,相關函數知識后期講解),三是美化scanf代碼加入輸出說明。
1 /* 2 Name:scanf一次給多個變量賦值 3 Copyright:yangbin.org 4 Author: Yangbin 5 Date:2014年2月8日 20:57:44 6 Description:本課程筆記,一是對多個變量進行賦值,二是對非法輸入的值做正確處理(處理方式了解即可,相關函數知識后期講解),三是美化scanf代碼加入輸出說明。 7 */ 8 # include <stdio.h> 9 # include <stdlib.h> 10 int main(void) 11 { 12 int i,j; 13 14 printf("請輸入兩個數值,中間以空格分隔(不能包含漢字、符號、字母):"); 15 scanf("%d %d", &i, &j); //輸入i和j的一個值 16 /*scanf("%d\n", &i); scanf輸入時,切記不能使用\n; 17 非輸入控制符必須原字符輸出,如: 18 scanf("%d, %d", &i, &j) 輸入本句時必須加 逗號; 19 */ 20 21 printf("i = %d, j = %d\n", i, j); //輸出 i,j的值 22 23 system("pause"); 24 return 0; 25 } 26 /* 27 ---------------------- 28 該代碼在Dev-C++ 4.9.9.2下編寫 29 ------輸出結果-------- 30 請輸入兩個數值,中間以空格分隔(不能包含漢字、符號、字母):2 3 31 i = 2, j = 3 32 --------總結--------- 33 使用scanf之前最好先使用printf提示用戶以什么樣的方式來輸入 34 Scanf中盡量不要使用非輸入控制符,尤其是不要用\n 35 應該編寫代碼對用戶的非法輸入做適當的處理【非重點】 36 while ((ch=getchar()) != '\n') 37 continue; 38 39 */
以下內容來自百度百科:
scanf()函數返回成功賦值的數據項數,讀到文件末尾出錯時則返回EOF。
如:
scanf("%d,%d", &a, &b);
如果a和b都被成功讀入,那么scanf的返回值就是2
如果只有a被成功讀入,返回值為1
如果a和b都未被成功讀入,返回值為0
如果遇到錯誤或遇到end of file,返回值為EOF。
且返回值為int型.
例:使用scanf函數輸入數據。
#include<stdio.h> int main() { int a,b,c; printf("輸入 a, b, c\n"); scanf("%d,%d,%d", &a, &b, &c); printf("a = %d b = %d c = %d\n", a, b, c); fflush(stdin); return 0; }
注意上面的scanf("%d,%d,%d",&a,&b,&c);中%d,%d,%d之間有逗號,在輸入數據時也要加逗號,如果去掉逗號,輸入時就不用逗號,而用空格,tab鍵或回車鍵將各個數據隔開
&a,&b,&c中的&是地址運算符,&a指a在內存中的地址。scanf的作用是:按照a,b,c的內存地址將a,b,c的值存進去。變量a,b,c的地址是在編譯連續階段分配的。
這里注意:如果scanf中%d是連着寫的如“%d%d%d”,在輸入數據是,數據之間不可以加逗號,只能是空格或tab鍵或者回車鍵——“2 3 4”/“2(按tab)3(按tab)4(按tab)”。若是“%d,%d,%d”,則在輸入數據時需要加“,”——“2,3,4”.