一、scanf()轉換說明中的修飾符
| 轉換說明 | 含義 |
|---|---|
| * | 抑制賦值,示例:“%*d" |
| 數字 | 最大欄位寬度,輸入達到最大欄位寬度處,或者第一次遇到空白字符為止,示例:"%10s" |
| hh | 把整數作為signed char 或者 unsigned char 型別讀取 |
| ll | 把整數作為long long或者unsigned long long型別讀取(C99),示例:"%lld"、"%llu" |
| h、l或者L | "%hd"和"%hi”表明把對應的值存盤為short int型別;“%ho”、“%hx"和”%hu"表明把對應的值存盤為unsigned short int型別;"%ld"和"%li"表明把對應的值存盤為long型別;"%lo"、“lx”和“%lu”表明把對應的值存盤為unsigned long型別;“%le"、”%lf“和"%lg"表明把對應的值存盤為double型別;在e、f和g前面使用L而不是l,表明把對應的值被存盤為long double型別,如果沒有修飾符,d、i、o和x表明對應的值被存盤為int型別,f和g表明把對應的值存盤為float型別 |
| j | 在整形轉換說明后面時,表明使用intmax_t或者uintmax_t型別(C99)示例:"%jd"、"%ju" |
| z | 在整形轉換說明后面時,表明使用sizeof的回傳型別,示例:"%zd"、”%zo" |
| t | 在整形轉換說明后面時,表明使用表示兩個指標差值的型別 ,示例:"%td"、"%tx" |
- scanf()函式每次讀取一個字符,跳過所有的空白字符,直到遇到第一個非空白字符才開始讀取,
- 如果使用欄位寬度,scanf()在欄位末尾或者第一個空白字符的時候停止讀取,無法利用欄位寬度讓只有一個%s的scanf()讀取多個單詞,最后要注意一點:當scanf()把字串放進指定的陣列的時候,它會在字符序列的末尾添加上'\0',讓陣列中的內容成為一個C字串,
二、格式字串中的普通字符
- scanf()函式中允許把普通字符放到格式字串中,除了空格字符外的普通字符必須與輸入字串嚴格匹配,例如:
scanf("%d,%d",&n,&m);//該函式將其解釋成用戶將會輸入一個數字,一個逗號,然后再輸入一個逗號
scanf("%c",&ch);//從輸入的第一個字符開始讀取
scanf(" %c",&ch);//從第一個非空白字符開始讀取
#include<stdio.h>
#pragma warning(disable:4996)
int D22_1_varwid(void) {
unsigned width, precision;
int number = 256;
double weight = 242.5;
printf("Enter a field width:\n");
scanf("%d", &width);
printf("The number is :%*d:\n", width, number);
printf("Now enter a width and a precision.\n");
scanf("%d %d", &width, &precision);
printf("Weight = %*.*f\n", width, precision, weight);
printf("Done!\n");
return 0;
}

三、原始碼:
- D22_1_varwid.c
- https://github.com/ruigege66/CPrimerPlus/blob/masterD22_1_varwid.c
- CSDN:https://blog.csdn.net/weixin_44630050
- 博客園:https://www.cnblogs.com/ruigege0000/
- 歡迎關注微信公眾號:傅里葉變換,個人賬號,僅用于技術交流

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29065.html
標籤:C
上一篇:學習第24天
下一篇:Java面向物件
