C語言筆記 15_標準庫&locale&math&setjmp&signal&stdarg&stddef

来源:https://www.cnblogs.com/rope/archive/2020/01/09/12173349.html
-Advertisement-
Play Games

簡介 locale.h 頭文件定義了特定地域的設置,比如日期格式和貨幣符號。接下來我們將介紹一些巨集,以及一個重要的結構 struct lconv 和兩個重要的函數。 庫巨集 下麵列出了頭文件 locale.h 中定義的巨集,這些巨集將在下列的兩個函數中使用: | 序號 | 巨集 & 描述 | | : | : ...


<locale.h>

簡介

locale.h 頭文件定義了特定地域的設置,比如日期格式和貨幣符號。接下來我們將介紹一些巨集,以及一個重要的結構 struct lconv 和兩個重要的函數。

庫巨集

下麵列出了頭文件 locale.h 中定義的巨集,這些巨集將在下列的兩個函數中使用:

序號 巨集 & 描述
1 LC_ALL 設置下麵的所有選項。
2 LC_COLLATE 影響 strcoll 和 strxfrm 函數。
3 LC_CTYPE 影響所有字元函數。
4 LC_MONETARY 影響 localeconv 函數提供的貨幣信息。
5 LC_NUMERIC 影響 localeconv 函數提供的小數點格式化和信息。
6 LC_TIME 影響 strftime 函數。

庫函數

下麵列出了頭文件 locale.h 中定義的函數:

序號 函數 & 描述
1 char setlocale(int category, const char locale) 設置或讀取地域化信息。
2 struct lconv *localeconv(void) 設置或讀取地域化信息。

庫結構

typedef struct {
   char *decimal_point;
   char *thousands_sep;
   char *grouping;    
   char *int_curr_symbol;
   char *currency_symbol;
   char *mon_decimal_point;
   char *mon_thousands_sep;
   char *mon_grouping;
   char *positive_sign;
   char *negative_sign;
   char int_frac_digits;
   char frac_digits;
   char p_cs_precedes;
   char p_sep_by_space;
   char n_cs_precedes;
   char n_sep_by_space;
   char p_sign_posn;
   char n_sign_posn;
} lconv

以下是各欄位的描述:

序號 欄位 & 描述
1 decimal_point 用於非貨幣值的小數點字元。
2 thousands_sep 用於非貨幣值的千位分隔符。
3 grouping 一個表示非貨幣量中每組數字大小的字元串。每個字元代表一個整數值,每個整數指定當前組的位數。值為 0 意味著前一個值將應用於剩餘的分組。
4 int_curr_symbol 國際貨幣符號使用的字元串。前三個字元是由 ISO 4217:1987 指定的,第四個字元用於分隔貨幣符號和貨幣量。
5 currency_symbol 用於貨幣的本地符號。
6 mon_decimal_point 用於貨幣值的小數點字元。
7 mon_thousands_sep 用於貨幣值的千位分隔符。
8 mon_grouping 一個表示貨幣值中每組數字大小的字元串。每個字元代表一個整數值,每個整數指定當前組的位數。值為 0 意味著前一個值將應用於剩餘的分組。
9 positive_sign 用於正貨幣值的字元。
10 negative_sign 用於負貨幣值的字元。
11 int_frac_digits 國際貨幣值中小數點後要顯示的位數。
12 frac_digits 貨幣值中小數點後要顯示的位數。
13 p_cs_precedes 如果等於 1,則 currency_symbol 出現在正貨幣值之前。如果等於 0,則 currency_symbol 出現在正貨幣值之後。
14 p_sep_by_space 如果等於 1,則 currency_symbol 和正貨幣值之間使用空格分隔。如果等於 0,則 currency_symbol 和正貨幣值之間不使用空格分隔。
15 n_cs_precedes 如果等於 1,則 currency_symbol 出現在負貨幣值之前。如果等於 0,則 currency_symbol 出現在負貨幣值之後。
16 n_sep_by_space 如果等於 1,則 currency_symbol 和負貨幣值之間使用空格分隔。如果等於 0,則 currency_symbol 和負貨幣值之間不使用空格分隔。
17 p_sign_posn 表示正貨幣值中正號的位置。
18 n_sign_posn 表示負貨幣值中負號的位置。

下麵的值用於 p_sign_posnn_sign_posn:

描述
0 封裝值和 currency_symbol 的括弧。
1 放置在值和 currency_symbol 之前的符號。
2 放置在值和 currency_symbol 之後的符號。
3 緊挨著放置在值和 currency_symbol 之前的符號。
4 緊挨著放置在值和 currency_symbol 之後的符號。

<math.h>

簡介

math.h 頭文件定義了各種數學函數和一個巨集。在這個庫中所有可用的功能都帶有一個 double 類型的參數,且都返回 double 類型的結果。

庫巨集

下麵是這個庫中定義的唯一的一個巨集:

序號 巨集 & 描述
1 HUGE_VAL 當函數的結果不可以表示為浮點數時。如果是因為結果的幅度太大以致於無法表示,則函數會設置 errno 為 ERANGE 來表示範圍錯誤,並返回一個由巨集 HUGE_VAL 或者它的否定(- HUGE_VAL)命名的一個特定的很大的值。如果結果的幅度太小,則會返回零值。在這種情況下,error 可能會被設置為 ERANGE,也有可能不會被設置為 ERANGE。

庫函數

下麵列出了頭文件 math.h 中定義的函數:

序號 函數 & 描述
1 double acos(double x) 返回以弧度表示的 x 的反餘弦。
2 double asin(double x) 返回以弧度表示的 x 的反正弦。
3 double atan(double x) 返回以弧度表示的 x 的反正切。
4 double atan2(double y, double x) 返回以弧度表示的 y/x 的反正切。y 和 x 的值的符號決定了正確的象限。
5 double cos(double x) 返回弧度角 x 的餘弦。
6 double cosh(double x) 返回 x 的雙曲餘弦。
7 double sin(double x) 返回弧度角 x 的正弦。
8 double sinh(double x) 返回 x 的雙曲正弦。
9 double tanh(double x) 返回 x 的雙曲正切。
10 double exp(double x) 返回 e 的 x 次冪的值。
11 double frexp(double x, int *exponent) 把浮點數 x 分解成尾數和指數。返回值是尾數,並將指數存入 exponent 中。所得的值是 x = mantissa * 2 ^ exponent。
12 double ldexp(double x, int exponent) 返回 x 乘以 2 的 exponent 次冪。
13 double log(double x) 返回 x 的自然對數(基數為 e 的對數)。
14 double log10(double x) 返回 x 的常用對數(基數為 10 的對數)。
15 double modf(double x, double *integer) 返回值為小數部分(小數點後的部分),並設置 integer 為整數部分。
16 double pow(double x, double y) 返回 x 的 y 次冪。
17 double sqrt(double x) 返回 x 的平方根。
18 double ceil(double x) 返回大於或等於 x 的最小的整數值。
19 double fabs(double x) 返回 x 的絕對值。
20 double floor(double x) 返回小於或等於 x 的最大的整數值。
21 double fmod(double x, double y) 返回 x 除以 y 的餘數。

<setjmp.h>

簡介

setjmp.h 頭文件定義了巨集 setjmp()、函數 longjmp() 和變數類型 jmp_buf,該變數類型會繞過正常的函數調用和返回規則。

庫變數

下麵列出了頭文件 setjmp.h 中定義的變數:

序號 變數 & 描述
1 jmp_buf 這是一個用於存儲巨集 setjmp() 和函數 longjmp() 相關信息的數組類型。

庫巨集

下麵是這個庫中定義的唯一的一個巨集:

序號 巨集 & 描述
1 int setjmp(jmp_buf environment) 這個巨集把當前環境保存在變數 environment 中,以便函數 longjmp() 後續使用。如果這個巨集直接從巨集調用中返回,則它會返回零,但是如果它從 longjmp() 函數調用中返回,則它會返回一個非零值。

庫函數

下麵是頭文件 setjmp.h 中定義的唯一的一個函數:

序號 函數 & 描述
1 void longjmp(jmp_buf environment, int value) 該函數恢復最近一次調用 setjmp() 巨集時保存的環境,jmp_buf 參數的設置是由之前調用 setjmp() 生成的。

<signal.h>

簡介

signal.h 頭文件定義了一個變數類型 sig_atomic_t、兩個函數調用和一些巨集來處理程式執行期間報告的不同信號。

庫變數

下麵是頭文件 signal.h 中定義的變數類型:

序號 變數 & 描述
1 sig_atomic_t 這是 int 類型,在信號處理程式中作為變數使用。它是一個對象的整數類型,該對象可以作為一個原子實體訪問,即使存在非同步信號時,該對象可以作為一個原子實體訪問。

庫巨集

下麵是頭文件 signal.h 中定義的巨集,這些巨集將在下列兩個函數中使用。SIG_ 巨集與 signal 函數一起使用來定義信號的功能。

序號 巨集 & 描述
1 SIG_DFL 預設的信號處理程式。
2 SIG_ERR 表示一個信號錯誤。
3 SIG_IGN 忽視信號。

SIG 巨集用於表示以下各種條件的信號碼:

序號 巨集 & 描述
1 SIGABRT 程式異常終止。
2 SIGFPE 算術運算出錯,如除數為 0 或溢出。
3 SIGILL 非法函數映象,如非法指令。
4 SIGINT 中斷信號,如 ctrl-C。
5 SIGSEGV 非法訪問存儲器,如訪問不存在的記憶體單元。
6 SIGTERM 發送給本程式的終止請求信號。

庫函數

下麵是頭文件 signal.h 中定義的函數:

序號 函數 & 描述
1 void (signal(int sig, void (func)(int)))(int) 該函數設置一個函數來處理信號,即信號處理程式。
2 int raise(int sig) 該函數會促使生成信號 sig。sig 參數與 SIG 巨集相容。

<stdarg.h>

簡介

stdarg.h 頭文件定義了一個變數類型 va_list 和三個巨集,這三個巨集可用於在參數個數未知(即參數個數可變)時獲取函數中的參數。

可變參數的函數通在參數列表的末尾是使用省略號(,...)定義的。

庫變數

下麵是頭文件 stdarg.h 中定義的變數類型:

序號 變數 & 描述
1 va_list 這是一個適用於 va_start()、va_arg()va_end() 這三個巨集存儲信息的類型。

庫巨集

下麵是頭文件 stdarg.h 中定義的巨集:

序號 巨集 & 描述
1 void va_start(va_list ap, last_arg) 這個巨集初始化 ap 變數,它與 va_argva_end 巨集是一起使用的。last_arg 是最後一個傳遞給函數的已知的固定參數,即省略號之前的參數。
2 type va_arg(va_list ap, type) 這個巨集檢索函數參數列表中類型為 type 的下一個參數。
3 void va_end(va_list ap) 這個巨集允許使用了 va_start 巨集的帶有可變參數的函數返回。如果在從函數返回之前沒有調用 va_end,則結果為未定義。

<stddef.h>

簡介

stddef .h 頭文件定義了各種變數類型和巨集。這些定義中的大部分也出現在其它頭文件中。

庫變數

下麵是頭文件 stddef.h 中定義的變數類型:

序號 變數 & 描述
1 ptrdiff_t 這是有符號整數類型,它是兩個指針相減的結果。
2 size_t 這是無符號整數類型,它是 sizeof 關鍵字的結果。
3 wchar_t 這是一個寬字元常量大小的整數類型。

庫巨集

下麵是頭文件 stddef.h 中定義的巨集:

序號 巨集 & 描述
1 NULL 這個巨集是一個空指針常量的值。
2 offsetof(type, member-designator) 這會生成一個類型為 size_t 的整型常量,它是一個結構成員相對於結構開頭的位元組偏移量。成員是由 member-designator 給定的,結構的名稱是在 type 中給定的。

參考自:https://www.runoob.com/cprogramming/c-tutorial.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、Spring IoC容器概述 1.依賴反轉(依賴註入):依賴對象的獲得被反轉了。 如果合作對象的引用或依賴關係的管理由具體對象來完成,會導致代碼的高度耦合和可測試性的降低,這對複雜的面向對象系統的設計是非常不利的。 在Spring中,IoC容器是實現依賴控制反轉這個模式的載體,它可以在對象生成或 ...
  • 一、概述 從前面 "文章" 中我們可以瞭解到,javac 的三個步驟中,程式員唯一能幹預的就是註解處理器部分,註解處理器類似於編譯器的插件,在這些插件裡面,可以讀取、修改、添加抽象語法樹中的任意元素。因此,只要有足夠的創意,程式員可以通過自定義插入式註解處理器來實現許多原本只能在編碼中完成的事情。我 ...
  • Java中IO的模型分為三種,同步阻塞的BIO、同步非阻塞的NIO、非同步非阻塞的AIO。 BIO【同步阻塞】 在JDK1.4出來之前,我們建立網路連接的時候採用BIO模式,需要先在服務端啟動一個ServerSocket,然後在客戶端啟動Socket來對服務端進行通信,預設情況下服務端需要對每個請求建 ...
  • django的model欄位在保存的時候做預處理怎麼辦? 比如這個model: class Book(Model): publish_date = DateField() 但是在保存時,用戶輸入數據是: book1 = Book(publish_date='20171001') 我希望這個publi ...
  • 簡單寫一下多對多查詢model 不是多對多的欄位我就沒寫上來的 class Tag(models.Model): name = models.CharField(max_length=20,verbose_name='標簽') add_time = models.DateField(default= ...
  • PHP+InfiniteScroll實現網頁無限滾動載入數據實例,實現原理:當滾動條到底離網頁底部一定長度的時候,向後臺發送頁數並獲取數據。 ...
  • """ 返回查詢集的方法稱為過濾器 all() 返回查詢集中所有數據 filter() 返回符合條件的數據 一、filter(鍵=值) 二、filter(鍵=值,鍵=值) #兩個關係為and 三、filter(鍵=值).filter(鍵=值) #兩個關係為and exclude()過濾掉符合邏輯的數 ...
  • from django.db import models class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __str__(self): # __uni ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...