C語言的scanf語句格式
例:使用scanf函數輸入數據。
#include <stdio.h>
int main(void)
{
int a,b,c;
printf("Give me the value of a,b,c seperated with whitespaces:\n");
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
return 0;
}
&a,&b,&c中的&是尋址操作符,&a表示對象a在內存中的地址 [3] ,是一個右值。變量a,b,c的地址是在編譯階段分配的(存儲順序由編譯器決定)。
這里注意:如果scanf中%d是連著寫的如“%d%d%d”,在輸入數據時,數據之間不可以用逗號分隔。
只能用空白字符(空格或tab鍵或者回車鍵)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回車)4”等。若是“%d,%d,%d”,則在輸入數據時需要加“,”,如“2,3,4”。
(在有一些實現中,printf函數與scanf函數在使用時可以不使用預編譯命令#include <stdio.h>;。)它是格式輸入函數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變量之中。
scanf 是 scan format 的縮寫,意思是格式化掃描,也就是從鍵盤獲得用戶輸入,和 printf 的功能正好相反。
擴展資料:
scanf函數使用注意問題:
(1)在高版本的 Visual Studio 編譯器中,scanf 被認為是不安全的,被棄用,應當使用scanf_s代替 scanf。
(2) 對于字符串數組或字符串指針變量,由于數組名可以轉換為數組和指針變量名本身就是地址,因此使用scanf()函數時,不需要在它們前面加上"&"操作符。
(3) 可以在格式化字符串中的"%"各格式化規定符之間加入一個整數,表示任何讀操作中的最大位數。
(4) scanf函數中沒有類似printf的精度控制。
如: scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。
(5) scanf中要求給出變量地址,如給出變量名則會出錯
如 scanf("%d",a);是非法的,應改為scanf("%d",&a);才是合法的。
(6) 在輸入多個數值數據時,若格式控制串中沒有非格式字符作輸入數據之間的間隔,則可用空格,TAB或回車作間隔。
C編譯在碰到空格,TAB,回車或非法數據(如對“%d”輸入“12A”時,A即為非法數據)時即認為該數據結束。
(7) 在輸入字符數據(%c)時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。
參考資料來源:百度百科-scanf
C語言的scanf語句格式
例:使用scanf函數輸入數據。
#include
這里注意:如果scanf中%d是連著寫的如“%d%d%d”,在輸入數據時,數據之間不可以用逗號分隔。 只能用空白字符(空格或tab鍵或者回車鍵)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回車)4”等。
若是“%d,%d,%d”,則在輸入數據時需要加“,”,如“2,3,4”。 (在有一些實現中,printf函數與scanf函數在使用時可以不使用預編譯命令#include
它是格式輸入函數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變量之中。 scanf 是 scan format 的縮寫,意思是格式化掃描,也就是從鍵盤獲得用戶輸入,和 printf 的功能正好相反。
擴展資料: scanf函數使用注意問題: (1)在高版本的 Visual Studio 編譯器中,scanf 被認為是不安全的,被棄用,應當使用scanf_s代替 scanf。 (2) 對于字符串數組或字符串指針變量,由于數組名可以轉換為數組和指針變量名本身就是地址,因此使用scanf()函數時,不需要在它們前面加上"&"操作符。
(3) 可以在格式化字符串中的"%"各格式化規定符之間加入一個整數,表示任何讀操作中的最大位數。 (4) scanf函數中沒有類似printf的精度控制。
如: scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。
(5) scanf中要求給出變量地址,如給出變量名則會出錯 如 scanf("%d",a);是非法的,應改為scanf("%d",&a);才是合法的。 (6) 在輸入多個數值數據時,若格式控制串中沒有非格式字符作輸入數據之間的間隔,則可用空格,TAB或回車作間隔。
C編譯在碰到空格,TAB,回車或非法數據(如對“%d”輸入“12A”時,A即為非法數據)時即認為該數據結束。 (7) 在輸入字符數據(%c)時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。
參考資料來源:百度百科-scanf。