新聞中心
![[C]scanf-格式輸入函數(shù)
[C]scanf-格式輸入函數(shù)](/upload/otherpic35/2167353.jpg)
scanf("格式控制字符串", 變量地址列表)
scanf 函數(shù)是一個(gè)標(biāo)準(zhǔn)庫(kù)函數(shù),函數(shù)原型位于
scanf 不能在控制臺(tái)回顯非格式化占位符字符串,也就是說(shuō)不能在控制臺(tái)顯示輸入提示。
scanf 第一個(gè)參數(shù) “格式控制字符串” 可以分為兩部分,一部分為格式占位符,另一部分為變量分隔符。
格式占位符%[*][輸入數(shù)據(jù)寬度][長(zhǎng)度]類型
scanf 支持輸入的類型如下:
1. d - 十進(jìn)制整數(shù)
2. o - 八進(jìn)制整數(shù)
3. x - 十六進(jìn)制整數(shù)
4. u - 無(wú)符號(hào)十進(jìn)制整數(shù)
5. f 或 e - 小數(shù)形式或指數(shù)形式的實(shí)型數(shù)
6. c - 單個(gè)字符
7. s - 字符串
變量分隔符變量分隔符是指在輸入多個(gè)變量數(shù)據(jù)時(shí)用于分隔輸入數(shù)據(jù)的非格式占位符。例如:
scanf("%dA%d", &a, &b)
在控制臺(tái)輸入:
123A456
結(jié)果為:a= 123, b = 456
其中 scanf 第一個(gè)參數(shù)中的 A 就是一個(gè)變量分隔符。如果 scanf 第一個(gè)參數(shù)中沒有指明變量分隔符,那么系統(tǒng)默認(rèn)空格符、Tab符或回車符作為分隔符,C編譯器在遇到這三個(gè)字符或者非法字符時(shí),就認(rèn)為輸入的數(shù)據(jù)結(jié)束。例如:
scanf("%d%d", &a, &b);
在控制臺(tái)輸入:
123 456
或者
123456
結(jié)果都是:a= 123, b = 456
scanf 函數(shù)實(shí)例
1. 一般用法int main(void) {
int a, b;
printf("Input a, b
");
scanf("%d%d", &a, &b);
printf("a=%d, b=%d
", a, b);
return 0;
}
輸入與輸出:
$ ./a.out
Input a, b
123 456
a=123, b=456
2. 使用 * 符號(hào)表示跳過該輸入值將上例代碼修改為:
scanf("%d%*d%d", &a, &b)
輸入與輸出:跳過第二個(gè)輸入值 456, 將第三個(gè)輸入值 789 賦給了變量 b。
$ ./a.out
Input a, b
123 456 789
a=123, b=789
3. 格式占位符中限定數(shù)據(jù)寬度將上例代碼修改為:
scanf("%4d%4d", &a, &b);
輸入與輸出:
$ ./a.out
Input a, b
12345 56789
a=1234, b=5
$ ./a.out
Input a, b
123456789
a=1234, b=5678
第一次輸入時(shí),C程序直接截取了 12345 的前四位賦給了變量 a,然后從剩余的 5 56789 中準(zhǔn)備再截取四位賦給變量 b,但在第二個(gè)位置遇到了空格符,之前說(shuō)過C程序是默認(rèn)空格符為數(shù)據(jù)分隔符,因此C程序認(rèn)為該變量數(shù)據(jù)輸入結(jié)束,將 5 賦給了b。
分享文章:[C]scanf-格式輸入函數(shù)-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://fisionsoft.com.cn/article/dspdoi.html