一、scanf()的回傳值
- scanf()函式會回傳成功讀取的項數
- 如果沒有讀取任何項,而且需要讀取的是一個數字,但是卻讀取了非數字,那么就會回傳0
- 當檢測到“檔案結尾”的時候,會回傳EOF(EOF是頭檔案stdio.h中的特殊值,通常用#define指令把EOF定義為-1
二、printf()和scanf()的*修飾符
- 首先看一下printf的*的用法
#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;
}

- 從上面的代碼可以看的出來*其實用來指定寬度,還支持小數點后面的用法,表示保留幾位小數
- 下面我們再看一下scanf()的用法,它和printf()稍有不同
#include<stdio.h>
#pragma warning(disable:4996)
int D23_1_skip2(void) {
int n;
printf("Please enter three integers:\n");
scanf("%*d %*d %d", &n);
printf("The last integer was %d\n", n);
return 0;
}

- 把*放到%和轉換字符之間,就會使的scanf()跳過相應的輸出項,從上面的代碼中可以看出,直接跳過了前兩個整數,
三、關鍵概念
- 字串存盤在一個陣列中,都是以一個叫做空字符的隱藏字符結尾
- 最好用#indefine定義數字常量,用const關鍵字宣告的變數為只讀變數,
- 空白字符(制表符、空格和換行符)在scanf()處理輸入時,除了%c模式(讀取一個字符),scanf()在讀取輸入的時候會跳非空白字符前的所有空白字符,直到遇到空白字符或者與轉換說明不相符的字符,
四、總結
- 字串是一個處理單元的字符,C語言中會以空字符(ASCII碼就是0)結尾的一系列字符,
- strlen()函式(在string.h中),可以用于獲取字串的長度(末尾的空字符不計入在內),
- C前處理器為前處理器指令(以#符號開始)查找源代碼程式,并且在開始編譯程式之前,處理它們,
- 處理器根據#include指令把另一個檔案中的內容添加到該指令所在的位置,#define指令可以創建明示變數(符號常量)
- limits.h和float.h頭檔案中用#define定義了一組表示整型和浮點型不同屬性的符號常量,另外還可以使用const限定符來創建定義后不能修改的變數,
三、原始碼:
- D23_1_skip2.c
- https://github.com/ruigege66/CPrimerPlus/blob/master/D23_1_skip2.c
- CSDN:https://blog.csdn.net/weixin_44630050
- 博客園:https://www.cnblogs.com/ruigege0000/
- 歡迎關注微信公眾號:傅里葉變換,個人賬號,僅用于技術交流

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/70467.html
標籤:C
下一篇:cxgrid 單元格模糊查詢
