W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵(lì)
下表列出了scanf函數(shù)的轉(zhuǎn)換字符及其含義。
轉(zhuǎn)換字符 | 含義 |
---|---|
d | 將輸入讀取為帶符號的十進(jìn)制整數(shù)。 |
i | 將輸入讀取為有符號整數(shù)。如果輸入從0開始,則輸入被假定為八進(jìn)制。如果輸入以0x或0X開始,則假設(shè)為十六進(jìn)制輸入;否則為十進(jìn)制輸入。 |
o | 讀取輸入,假設(shè)它是一個(gè)帶符號的八進(jìn)制整數(shù)。 |
u | 將輸入讀取為無符號整數(shù)。 |
x | 將輸入讀取為帶符號的十六進(jìn)制整數(shù)。 |
c | 讀取字段寬度指定的字符數(shù)為類型char,包括空格。如果字段寬度規(guī)范不存在,將讀取一個(gè)字符。要忽略前面的空格,請?jiān)诟袷揭?guī)范之前加一個(gè)空白字符。 |
s | 讀取一串連續(xù)的非空白字符作為類型char,從下一個(gè)非空白字符開始。 |
[] | 從方括號中的指定集中讀取字符。集合中沒有找到的第一個(gè)字符結(jié)束輸入。%[] ab]讀取字符,只要它們是a,b或。只要不是a,b或],%[^] ab]讀取字符。 |
a,A,e,E,f,F(xiàn),G 或 g | 將輸入轉(zhuǎn)換為float類型。輸入中的符號,小數(shù)點(diǎn)和指數(shù)是可選的。 |
% | 讀取一個(gè)%字符。跳過%字符是%%。 |
p | 讀取輸入作為指針。參數(shù)應(yīng)為void **類型。 |
n | 沒有讀取輸入,但從鍵盤讀取的字符數(shù)存儲在參數(shù)中。 |
下表列出了轉(zhuǎn)換規(guī)格中的選項(xiàng)示例。
規(guī)范 | 描述 |
---|---|
%lf | 讀取下一個(gè)值作為double類型。 |
%*d | 讀取下一個(gè)整數(shù)值,但不要存儲它。 |
%15c | 讀取接下來的15個(gè)字符作為類型char。 |
\n%c | 讀取下一個(gè)字符為類型char忽略空格字符。 |
%10lld | 讀取接下來的十個(gè)字符作為long long類型的整數(shù)值。 |
%Lf | 讀取下一個(gè)值作為long double類型的浮點(diǎn)值。 |
%hu | 讀取下一個(gè)值作為無符號短類型。 |
#include <stdio.h>
int main(void) {
int i = 0;
int j = 0;
int value_count = 0;
float fp1 = 0.0f;
printf("Enter: fp1 = 3.1 i = 7 8\n");
printf("\nInput:");
value_count = scanf("fp1 = %f i = %d %d", &fp1, &i , &j);
printf("\nOutput:\n");
printf("Count of values read = %d\n", value_count);
printf("fp1 = %f\ti = %d\tj = %d\n", fp1, i, j);
return 0;
}
上面的代碼生成以下結(jié)果。
#include <stdio.h>
int main(void)
{
float fp1 = 0.0f;
float fp2 = 0.0f;
float fp3 = 0.0f;
int value_count = 0;
printf("Enter: 3.14.314E1.0314e+02\n");
printf("Input:\n");
value_count = scanf("%f %f %f", &fp1, &fp2, &fp3);
printf("\nOutput:\n");
printf("Number of values read = %d\n", value_count);
printf("fp1 = %f fp2 = %f fp3 = %f\n", fp1, fp2, fp3);
return 0;
}
上面的代碼生成以下結(jié)果。
我們可以使用格式說明符%x從輸入流讀取十六進(jìn)制值。
對于八進(jìn)制值,您使用%o。
#include <stdio.h>
int main(void) {
int i = 0;
int j = 0;
int k = 0;
int n = 0;
printf("Enter three integer values:");
n = scanf(" %d %x %o", &i , &j, &k );
printf("\nOutput:\n");
printf("%d values read.\n", n);
printf("i = %d j = %d k = %d\n", i, j, k );
return 0;
}
上面的代碼生成以下結(jié)果。
您可以使用格式說明符%c讀取單個(gè)字符并將其存儲為類型char。
要讀取一串字符,您可以使用說明符%s或說明符%[]。
%[aeiou]將讀取僅由元音組成的字符串。
不是元音的第一個(gè)字符將表示字符串的末尾。
%[^ aeiou]讀取一個(gè)字符串,其中包含不是元音的任何字符。
第一個(gè)元音或空格字符將表示字符串的末尾。
%[]規(guī)范使您能夠讀取一個(gè)包含空格的字符串,并且%s規(guī)范不能這樣做。
您只需要將一個(gè)空格作為方括號之間的字符之一。
#include <stdio.h>
int main(void){
char initial = " ";
char name[80] = { " " };
char age[4] = { "0" };
printf("Enter your first initial: ");
scanf("%c", &initial, sizeof(initial));
printf("Enter your first name: " );
scanf("%s", name, sizeof(name));
fflush(stdin);
if(initial != name[0])
printf("%s,you got your initial wrong.\n", name);
else
printf("Hi, %s. Your initial is correct. Well done!\n", name );
printf("Enter your name and age separated by a comma:\n" );
scanf_s("%[^,] , %[0123456789]", name, sizeof(name), age, sizeof(age));
printf("\name is %s is %s years old.\n", name, age );
return 0;
}
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: