32 C 語言字符處理函數詳解:isalnum、isalpha、iscntrl、isprint、isgraph、ispunct、isspace

1?isalnum() 函數

1.1 函數原型

#include <ctype.h>int isalnum(int c);

1.2 功能說明

????????isalnum() 函數用于檢查傳入的整數參數是否為 ASCII 編碼的字母或數字字符('A' - 'Z'、'a' - 'z'、'0' - '9',對應 ASCII 值 65 - 90、97 - 122、48 - 57)

  • 參數:

    • c 表示要檢查的字符,以 int 形式傳遞(通常是 char 類型轉換而來的 ASCII 碼值)

  • 返回值:

    • 如果 c 是字母或數字字符,返回非零值(通常是 1,表示真)
    • 如果 c 不是字母或數字字符,返回 0(表示假)

1.3 注意事項

  1. 頭文件依賴:

    1. 使用 isalnum() 函數前,必須包含 <ctype.h> 頭文件,否則編譯器可能無法識別該函數,導致編譯錯誤或鏈接失敗。

  2. 參數范圍限制:

    • 雖然函數參數類型為?int,但實際應傳遞?unsigned char?類型的值或?EOF(通常用于文件操作結束標志)
    • 如果傳入的值超出?unsigned char?范圍(0 - 255)或?EOF,函數的行為是未定義的(可能導致程序崩潰或返回錯誤結果)。
    • 例如:直接傳遞負的 char 值(如 -1)或大于 127 的值時,函數會返回 0。
  3. 區域設置依賴:

    • isalnum() 的行為受區域設置(locale)影響,但在默認的 "C" 區域設置中,僅識別 ASCII 字母和數字字符。
    • 如果程序依賴其他區域設置(如非 ASCII 編碼),可能需要使用其他函數或手動處理。

1.4 應用場景

  1. 用戶輸入驗證:在用戶注冊或登錄時,檢查用戶名或密碼是否僅包含字母和數字(例如,不允許特殊字符)。

  2. 數據過濾:在處理用戶提交的表單數據時,過濾掉非字母或數字的字符(例如,清理電話號碼中的空格或連字符)。

  3. 字符串解析:在解析命令行參數或配置文件時,確保參數僅包含有效字符(例如,文件名或標識符)。

  4. 游戲開發:在驗證玩家輸入的昵稱或聊天消息時,限制字符類型(例如,防止使用特殊字符或表情符號)。

1.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 頭文件以使用 isalnum 函數int main()
{char str[] = "Hello123!@#"; // 包含字母、數字和符號的字符串printf("字符串 \"%s\" 中的字母或數字字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (isalnum(str[i])){printf("'%c' 是字母或數字字符\n", str[i]);}else{printf("'%c' 不是字母或數字字符\n", str[i]);}}// 檢查單個字符char ch = '7';if (isalnum(ch)){printf("\n'%c' 是一個字母或數字字符\n", ch);}else{printf("\n'%c' 不是一個字母或數字字符\n", ch);}return 0;
}

????????程序在 VS Code 中的運行結果如下所示:


2?isalpha() 函數

2.1 函數原型

#include <ctype.h>int isalpha(int c);

2.2 功能說明

????????isalpha() 函數用于檢查傳入的整數參數是否為 ASCII 編碼的字母字符('A' - 'Z' 或 'a' - 'z',對應 ASCII 值 65 - 90、97 - 122)

  • 參數:

    • c 表示要檢查的字符,以 int 形式傳遞(通常是 char 類型轉換而來的 ASCII 碼值)

  • 返回值:

    • 如果?c?是字母字符(大寫或小寫),返回非零值(通常是?1,表示真)
    • 如果?c?不是字母字符(如數字、符號、空格等),返回?0(表示假)

2.3 注意事項

  1. 頭文件依賴:

    1. 使用 isalpha() 函數前,必須包含 <ctype.h> 頭文件,否則編譯器可能無法識別該函數,導致編譯錯誤或鏈接失敗。

  2. 參數范圍限制:

    • 雖然函數參數類型為 int,但實際應傳遞 unsigned char 類型的值或 EOF(通常用于文件操作結束標志)
    • 如果傳入的值超出 unsigned char 范圍(0 - 255)或 EOF,函數的行為是未定義的(可能導致程序崩潰或返回錯誤結果)。
    • 例如:直接傳遞負的 char 值(如 -1)或大于 127 的值時,函數會返回 0。
  3. 區域設置依賴:

    • isalpha() 的行為受區域設置(locale)影響,但在默認的 "C" 區域設置中,僅識別 ASCII 字母字符。
    • 如果程序依賴其他區域設置(如非 ASCII 編碼,如帶重音符號的字母),可能需要使用其他函數或手動處理。

2.4 應用場景

  1. 輸入驗證:確保用戶輸入的敏感信息(如姓名、密碼)僅包含字母,避免數字或符號導致程序異常。

  2. 字符串處理:從混合字符串(如 "Name: Alice123")中提取或統計字母字符,便于后續處理(如大小寫轉換、格式化輸出)。

  3. 數據清洗:在文本分析或數據預處理時,移除非字母字符(如數字、標點符號),保留有效文本內容。

  4. 詞法分析:在編譯器開發中,識別代碼中的標識符(如變量名 count),為語法分析階段提供基礎。

2.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 頭文件以使用 isalpha 函數int main()
{char str[] = "Hello123!@#"; // 包含字母、數字和符號的字符串printf("字符串 \"%s\" 中的字母字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (isalpha(str[i])){printf("'%c' 是字母字符\n", str[i]);}else{printf("'%c' 不是字母字符\n", str[i]);}}// 檢查單個字符char ch = 'G';if (isalpha(ch)){printf("\n'%c' 是一個字母字符\n", ch);}else{printf("\n'%c' 不是一個字母字符\n", ch);}return 0;
}

????????程序在 VS Code 中的運行結果如下所示:


3 iscntrl() 函數

3.1 函數原型

#include <ctype.h>int iscntrl(int c);

3.2 功能說明

????????iscntrl() 函數用于檢查傳入的整數參數是否為 ASCII 編碼的控制字符(Control Character)。控制字符是不可見的字符,通常用于終端控制、通信協議或文件格式中的特殊操作(如換行符 \n、制表符 \t、響鈴符 \a 等)。

  • 參數:

    • c 表示要檢查的字符,以 int 形式傳遞(通常是 char 類型轉換而來的 ASCII 碼值)

  • 返回值:

    • 如果 c 是控制字符(ASCII 值 0 - 31 或 127),返回非零值(通常是 1,表示真)
    • 如果 c 不是控制字符(如可打印字符、空格等),返回 0(表示假)

3.3 注意事項

  1. 頭文件依賴:

    1. 使用 iscntrl() 函數前,必須包含 <ctype.h> 頭文件,否則編譯器可能無法識別該函數,導致編譯錯誤或鏈接失敗。

  2. 參數范圍限制:

    • 雖然函數參數類型為?int,但實際應傳遞?unsigned char?類型的值或?EOF(通常用于文件操作結束標志)
    • 如果傳入的值超出?unsigned char?范圍(0 - 255)或?EOF,函數的行為是未定義的(可能導致程序崩潰或返回錯誤結果)。
    • 例如:直接傳遞負的 char 值(如 -1)或大于 127 的值時,函數會返回 0。
  3. 區域設置依賴:

    • iscntrl() 的行為受區域設置(locale)影響,但在默認的 "C" 區域設置中,僅識別 ASCII 控制字符。
    • 如果程序依賴其他區域設置(如非 ASCII 編碼),可能需要使用其他函數或手動處理。

3.4 應用場景

  1. 輸入驗證:檢測輸入流中是否包含控制字符(如終端輸入或文件讀取),避免控制字符干擾程序邏輯。

  2. 數據清洗:在文本處理或日志分析時,移除控制字符(如 \n、\t),保留可打印字符以提升數據可讀性。

  3. 協議解析:在通信協議(如串口通信、網絡協議)中,識別控制字符以執行特定操作(如換行、響鈴)。

  4. 二進制文件處理:在解析二進制文件時,區分控制字符和普通數據,確保文件格式正確。

3.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 頭文件以使用 iscntrl 函數int main()
{char str[] = "Hello\tW\to\a!"; // 包含控制字符(制表符、響鈴符)的字符串printf("字符串 \"%s\" 中的控制字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (iscntrl(str[i])){printf("字符'%c'(ASCII:%d)是控制字符\n", str[i], str[i]);}else{printf("字符'%c'(ASCII:%d)不是控制字符\n", str[i], str[i]);}}// 檢查單個字符char ch = '\a'; // 響鈴符(ASCII 7)if (iscntrl(ch)){printf("\n字符'%c'(ASCII:%d)是一個控制字符\n", ch, ch);}else{printf("\n字符'%c'(ASCII:%d)不是一個控制字符\n", ch, ch);}return 0;
}

????????程序在 VS Code 中的運行結果如下所示:


4?isprint() 函數

4.1 函數原型

#include <ctype.h>int isprint(int c);

4.2 功能說明

????????isprint() 函數用于檢查傳入的整數參數是否為 ASCII 編碼的可打印字符(Printable Character)。可打印字符包括字母、數字、標點符號、空格(ASCII 值 32 - 126),但不包括控制字符(如 \n、\t)或不可見字符

  • 參數:

    • c 表示要檢查的字符,以 int 形式傳遞(通常是 char 類型轉換而來的 ASCII 碼值)

  • 返回值:

    • 如果?c?是可打印字符(ASCII 值 32-126),返回非零值(通常是?1,表示真)
    • 如果?c?不是可打印字符(如控制字符、刪除符?\x7F),返回?0(表示假)

4.3 注意事項

  1. 頭文件依賴:

    1. 使用 isprint() 函數前,必須包含 <ctype.h> 頭文件,否則編譯器可能無法識別該函數,導致編譯錯誤或鏈接失敗。

  2. 參數范圍限制:

    • 雖然函數參數類型為 int,但實際應傳遞 unsigned char 類型的值或 EOF(通常用于文件操作結束標志)
    • 如果傳入的值超出 unsigned char 范圍(0 - 255)或 EOF,函數的行為是未定義的(可能導致程序崩潰或返回錯誤結果)。
    • 例如:直接傳遞負的 char 值(如 -1)或大于 127 的值時,函數會返回 0。
  3. 區域設置依賴:

    • isprint() 的行為受區域設置(locale)影響,但在默認的 "C" 區域設置中,僅識別 ASCII 可打印字符。
    • 如果程序依賴其他區域設置(如非 ASCII 編碼),可能需要使用其他函數或手動處理。

4.4 應用場景

  1. 輸入驗證:確保用戶輸入的敏感信息(如密碼、用戶名)僅包含可打印字符,避免控制字符導致程序異常。

  2. 數據清洗:在文本處理或日志分析時,移除不可打印字符(如控制字符),保留有效內容以提升數據可讀性。

  3. 協議解析:在通信協議(如串口通信、網絡協議)中,驗證接收到的數據是否為可打印字符,避免非法字符干擾。

  4. 二進制文件處理:在解析文本文件時,區分可打印字符和二進制數據,確保文件內容正確。

4.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 頭文件以使用 isprint 函數int main()
{char str[] = "He\nWo\t!\a"; // 包含控制字符(換行符、制表符、響鈴符)的字符串printf("字符串 \"%s\" 中的可打印字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (isprint(str[i])){printf("字符 %d ('%c') 是可打印字符\n", str[i], str[i]);}else{printf("字符 %d ('%c') 不是可打印字符\n", str[i], str[i]);}}// 檢查單個字符char ch = ' '; // 空格(ASCII 32)if (isprint(ch)){printf("\n字符 %d ('%c') 是一個可打印字符\n", ch, ch);}else{printf("\n字符 %d ('%c') 不是一個可打印字符\n", ch, ch);}return 0;
}

????????程序在 VS Code 中的運行結果如下所示:


5 isgraph() 函數

5.1 函數原型

#include <ctype.h>int isgraph(int c);

5.2 功能說明

????????isgraph() 函數用于檢查傳入的整數參數是否為 ASCII 編碼的圖形字符(Graphic Character)圖形字符是可打印字符(ASCII 值 33 - 126),但不包括空格(ASCII 值 32)。這意味著 isgraph() 僅識別字母、數字、標點符號等非空格的可打印字符。

  • 參數:

    • c 表示要檢查的字符,以 int 形式傳遞(通常是 char 類型轉換而來的 ASCII 碼值)

  • 返回值:

    • 如果?c?是圖形字符(ASCII 值 33-126),返回非零值(通常是?1,表示真)
    • 如果?c?不是圖形字符(如空格、控制字符、刪除符?\x7F),返回?0(表示假)

5.3 注意事項

  1. 頭文件依賴:

    1. 使用 isgraph() 函數前,必須包含 <ctype.h> 頭文件,否則編譯器可能無法識別該函數,導致編譯錯誤或鏈接失敗。

  2. 參數范圍限制:

    • 雖然函數參數類型為?int,但實際應傳遞?unsigned char?類型的值或?EOF(通常用于文件操作結束標志)
    • 如果傳入的值超出?unsigned char?范圍(0 - 255)或?EOF,函數的行為是未定義的(可能導致程序崩潰或返回錯誤結果)。
    • 例如:直接傳遞負的 char 值(如 -1)或大于 127 的值時,函數會返回 0。
  3. 區域設置依賴:

    • isgraph() 的行為受區域設置(locale)影響,但在默認的 "C" 區域設置中,僅識別 ASCII 圖形字符。
    • 如果程序依賴其他區域設置(如非 ASCII 編碼),可能需要使用其他函數或手動處理。

5.4 應用場景

  1. 輸入驗證:確保用戶輸入的敏感信息(如密碼、驗證碼)僅包含非空格的可打印字符,避免無效字符干擾程序邏輯。

  2. 數據清洗:在文本處理或日志分析時,移除空格或不可打印字符(如控制字符),保留有效內容以提升數據可讀性。

  3. 協議解析:在通信協議(如串口通信、網絡協議)中,驗證接收到的數據是否為非空格的可打印字符,避免非法字符干擾。

  4. 格式化輸出:在生成格式化文本(如表格、報告)時,確保輸出內容不包含空格或控制字符,提升輸出質量。

5.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 頭文件以使用 isgraph 函數int main()
{char str[] = "He\nWo\t!"; // 包含控制字符(換行符、制表符)的字符串printf("字符串 \"%s\" 中的圖形字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (isgraph(str[i])){printf("字符 %d ('%c') 是圖形字符\n", str[i], str[i]);}else{printf("字符 %d ('%c') 不是圖形字符\n", str[i], str[i]);}}// 檢查單個字符char ch = ' '; // 空格(ASCII 32)if (isgraph(ch)){printf("\n字符 %d ('%c') 是一個圖形字符\n", ch, ch);}else{printf("\n字符 %d ('%c') 不是一個圖形字符\n", ch, ch);}return 0;
}

????????程序在 VS Code 中的運行結果如下所示:


6?ispunct() 函數

6.1 函數原型

#include <ctype.h>int ispunct(int c);

6.2 功能說明

????????ispunct() 函數用于檢查傳入的整數參數是否為 ASCII 編碼的標點符號(Punctuation Character)。標點符號是可打印字符(ASCII 值 33-126)中不屬于字母、數字或空格的字符,例如 ,、.、!、?、; 等。

  • 參數:

    • c 表示要檢查的字符,以 int 形式傳遞(通常是 char 類型轉換而來的 ASCII 碼值)

  • 返回值:

    • 如果?c?是標點符號(ASCII 值 33-126 中非字母、非數字、非空格的字符),返回非零值(通常是?1,表示真)
    • 如果?c?不是標點符號(如字母、數字、空格、控制字符),返回?0(表示假)

6.3 注意事項

  1. 頭文件依賴:

    1. 使用 ispunct() 函數前,必須包含 <ctype.h> 頭文件,否則編譯器可能無法識別該函數,導致編譯錯誤或鏈接失敗。

  2. 參數范圍限制:

    • 雖然函數參數類型為?int,但實際應傳遞?unsigned char?類型的值或?EOF(通常用于文件操作結束標志)
    • 如果傳入的值超出?unsigned char?范圍(0 - 255)或?EOF,函數的行為是未定義的(可能導致程序崩潰或返回錯誤結果)。
    • 例如:直接傳遞負的 char 值(如 -1)或大于 127 的值時,函數會返回 0。
  3. 區域設置依賴:

    • ispunct() 的行為受區域設置(locale)影響,但在默認的 "C" 區域設置中,僅識別 ASCII 標點符號。
    • 如果程序依賴其他區域設置(如非 ASCII 編碼),可能需要使用其他函數或手動處理。

6.4 應用場景

  1. 文本解析:在自然語言處理或文本分析中,識別句子邊界(如 !、?)或分隔符(如 ,、;),輔助語法分析。

  2. 輸入驗證:確保用戶輸入的特定字段(如密碼、用戶名)不包含非法標點符號,避免程序邏輯錯誤。

  3. 數據清洗:在日志分析或數據預處理時,移除或替換標點符號,保留有效內容以提升數據可讀性。

  4. 格式化輸出:在生成格式化文本(如表格、報告)時,控制標點符號的使用,確保輸出符合規范。

6.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 頭文件以使用 ispunct 函數int main()
{char str[] = "Hi! How? !,./"; // 包含標點符號的字符串printf("字符串 \"%s\" 中的標點符號:\n", str);for (int i = 0; str[i] != '\0'; i++){if (ispunct(str[i])){printf("字符 %d ('%c') 是標點符號\n", str[i], str[i]);}else{printf("字符 %d ('%c') 不是標點符號\n", str[i], str[i]);}}// 檢查單個字符char ch = '.'; // 標點符號(ASCII 46)if (ispunct(ch)){printf("\n'%c' 是一個標點符號\n", ch);}else{printf("\n'%c' 不是一個標點符號\n", ch);}return 0;
}

????????程序在 VS Code 中的運行結果如下所示:


7?isspace() 函數

7.1 函數原型

#include <ctype.h>int isspace(int c);

7.2 功能說明

????????isspace() 函數用于檢查傳入的整數參數是否為 ASCII 編碼的空白字符(Whitespace Character)空白字符包括空格( )、換行符(\n)、制表符(\t)、回車符(\r)、垂直制表符(\v)和換頁符(\f)

  • 參數:

    • c 表示要檢查的字符,以 int 形式傳遞(通常是 char 類型轉換而來的 ASCII 碼值)

  • 返回值:

    • 如果?c?是空白字符(ASCII 值 9、10、11、12、13、32),返回非零值(通常是?1,表示真)
    • 如果?c?不是空白字符(如字母、數字、標點符號),返回?0(表示假)

7.3 注意事項

  1. 頭文件依賴:

    1. 使用 isspace() 函數前,必須包含 <ctype.h> 頭文件,否則編譯器可能無法識別該函數,導致編譯錯誤或鏈接失敗。

  2. 參數范圍限制:

    • 雖然函數參數類型為?int,但實際應傳遞?unsigned char?類型的值或?EOF(通常用于文件操作結束標志)
    • 如果傳入的值超出?unsigned char?范圍(0 - 255)或?EOF,函數的行為是未定義的(可能導致程序崩潰或返回錯誤結果)。
    • 例如:直接傳遞負的 char 值(如 -1)或大于 127 的值時,函數會返回 0。
  3. 區域設置依賴:

    • isspace() 的行為受區域設置(locale)影響,但在默認的 "C" 區域設置中,僅識別 ASCII 空白字符。
    • 如果程序依賴其他區域設置(如非 ASCII 編碼),可能需要使用其他函數或手動處理。

7.4 應用場景

  1. 文本解析:在自然語言處理或文本分析中,識別句子或段落分隔符(如換行符、制表符),輔助語法分析。

  2. 輸入驗證:確保用戶輸入的特定字段(如用戶名、密碼)不包含非法空白字符,避免程序邏輯錯誤。

  3. 數據清洗:在日志分析或數據預處理時,移除或替換多余的空白字符,保留有效內容以提升數據可讀性。

  4. 格式化輸出:在生成格式化文本(如表格、報告)時,控制空白字符的使用,確保輸出符合規范。

7.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 頭文件以使用 isspace 函數int main()
{char str[] = "He l\nW d\t!"; // 包含空白字符的字符串printf("字符串 \"%s\" 中的空白字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (isspace(str[i])){printf("字符 %d ('%c') 是空白字符\n", str[i], str[i]);}else{printf("字符 %d ('%c') 不是空白字符\n", str[i], str[i]);}}// 檢查單個字符char ch = ' '; // 空格(ASCII 32)if (isspace(ch)){printf("\n'%c' 是一個空白字符\n", ch);}else{printf("\n'%c' 不是一個空白字符\n", ch);}return 0;
}

????????程序在 VS Code 中的運行結果如下所示:


8?字符處理函數總結

函數名功能描述輸入類型返回值類型返回值說明
isalnum檢查字符是否為字母或數字(a-z, A-Z, 0-9)int(字符的 ASCII 值)int非零值(真)如果字符是字母或數字,否則 0(假)
isalpha檢查字符是否為字母(a-z, A-Z)int(字符的 ASCII 值)int非零值(真)如果字符是字母,否則 0(假)
iscntrl檢查字符是否為控制字符(如換行符、制表符等,ASCII 0-31 和 127)int(字符的 ASCII 值)int非零值(真)如果字符是控制字符,否則 0(假)
isprint檢查字符是否為可打印字符(ASCII 32-126)int(字符的 ASCII 值)int非零值(真)如果字符是可打印字符,否則 0(假)
isgraph檢查字符是否為圖形字符(可打印且非空格字符,ASCII 33-126)int(字符的 ASCII 值)int非零值(真)如果字符是圖形字符,否則 0(假)
ispunct檢查字符是否為標點符號(如 !, ", #, $, %, 等)int(字符的 ASCII 值)int非零值(真)如果字符是標點符號,否則 0(假)
isspace檢查字符是否為空白字符(如空格、制表符、換行符等)int(字符的 ASCII 值)int非零值(真)如果字符是空白字符,否則 0(假)
  • 這些函數都定義在 <ctype.h> 頭文件中。
  • 輸入參數通常是字符的 ASCII 值(即 int 類型),但通常通過傳遞字符(如 'a')來隱式轉換。
  • 返回值類型為 int,通常用于布爾判斷(非零為真,0 為假)。
  • isalnum 是 isalpha 和 isdigit 的組合,檢查字符是否為字母或數字。
  • isgraph 和 isprint 的區別在于 isgraph 不包括空格字符(ASCII 32),而 isprint 包括。
  • isspace 檢查的空白字符包括空格、制表符(\t)、換行符(\n)、回車符(\r)、垂直制表符(\v)和換頁符(\f)。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84244.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84244.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84244.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在網絡排錯中,經常會用到的操作命令和其作用

在網絡排錯中&#xff0c;經常會用到的操作命令和其作用 網絡排錯是確保網絡連接正常運行的重要環節&#xff0c;通過使用一系列工具和命令&#xff0c;可以有效診斷和解決網絡問題。以下是常用的網絡排錯命令及其作用&#xff1a; 1.ping ping 是一個用于測試主機之間連通性…

C++中友元(friend)高級應用和使用示例

下面列出幾個 高級友元應用場景 與典型設計模式&#xff0c;并配以示例&#xff0c;幫助大家在實際項目中靈活運用 friend 機制。 1. ADL 友元注入&#xff08;“注入式友元”&#xff09; 場景&#xff1a;為某個類型定義非成員操作符&#xff08;如算術、流插入等&#xff0…

TCP相關問題 第一篇

TCP相關問題1 1.TCP主動斷開連接方為什么需要等待2MSL 如上圖所示:在被動鏈接方調用close&#xff0c;發送FIN時進入LAST_ACK狀態&#xff0c;但未收到主動連接方的ack確認&#xff0c;需要被動連接方重新發送一個FIN&#xff0c;而為什么是2MSL&#xff0c;一般認為丟失ack在…

STM32啟動文件學習(startup_stm32f40xx.s)

原代碼 ;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** ;* File Name : startup_stm32f40xx.s ;* Author : MCD Application Team ;* version : V1.8.0 ;* date : 09-November-2016 ;* Desc…

uni-app學習筆記二十三--交互反饋showToast用法

showToast部分文檔位于uniapp官網-->API-->界面&#xff1a;uni.showToast(OBJECT) | uni-app官網 uni.showToast(OBJECT) 用于顯示消息提示框 OBJECT參數說明 參數類型必填說明平臺差異說明titleString是提示的內容&#xff0c;長度與 icon 取值有關。iconString否圖…

【Ragflow】26.RagflowPlus(v0.4.0):完善解析邏輯/文檔撰寫模式全新升級

概述 在歷經半個月的間歇性開發后&#xff0c;RagflowPlus再次迎來一輪升級&#xff0c;正式發布v0.4.0。 開源地址&#xff1a;https://github.com/zstar1003/ragflow-plus 更新方法 下載倉庫最新代碼&#xff1a; git clone https://github.com/zstar1003/ragflow-plus.…

【論文解讀】Toolformer: 語言模型自學使用工具

1st author: ?Timo Schick? - ?Google Scholar? paper: Toolformer: Language Models Can Teach Themselves to Use Tools | OpenReview NeurIPS 2023 oral code: lucidrains/toolformer-pytorch: Implementation of Toolformer, Language Models That Can Use Tools, by…

Spring 官方推薦構造函數注入

1. 依賴關系明確 構造函數注入可以清晰地聲明類的依賴關系&#xff0c;所有必需的依賴項都通過構造函數參數傳遞&#xff0c;使得代碼的可讀性更高。這種方式讓類的使用者能夠直觀地了解類的依賴&#xff0c;而不需要通過注解或反射來猜測。 2. 增強代碼健壯性 構造函數注入…

[深度學習]搭建開發平臺及Tensor基礎

一、實驗目的 1. 掌握Windows下PyTorch 深度學習環境的配置 2. 掌握一種PyTorch開發工具 3. 理解張量并掌握Tensor的常用操作&#xff08;創建、調整形狀、加、減、乘、除、取絕對值、比較操作、數理統計操作 4. 掌握Tensor與Numpy的互相轉換操作 5. 掌握Tensor 的降維和…

【Zephyr 系列 14】使用 MCUboot 實現 BLE OTA 升級機制:構建安全可靠的固件分發系統

??關鍵詞:Zephyr、MCUboot、OTA 升級、BLE DFU、雙分區、Bootloader、安全固件管理 ??面向讀者:希望基于 Zephyr 為 BLE 設備加入安全 OTA 升級功能的開發者 ??預計字數:5200+ 字 ?? 前言:為什么你需要 OTA? 隨著設備部署數量增多與產品生命周期延長,遠程升級(…

App Search 和 Workplace Search 獨立產品現已棄用

作者&#xff1a;來自 Elastic The Search Product Team App Search 和 Workplace Search 的核心功能已集成到 Elasticsearch 和 Kibana 中。 我們宣布在 9.0 版本中棄用 App Search 和 Workplace Search。 如果你是 Elastic 的客戶&#xff0c;當前正在使用 App Search 和 Wo…

Spring Boot + OpenAI 構建基于RAG的智能問答系統

一、技術架構設計 1.1 系統架構圖 [前端]│▼ (HTTP/REST) [Spring Boot Controller]│▼ (Service Call) [問答處理服務層]├─? [知識庫檢索模塊] ──? [向量數據庫]└─? [OpenAI集成模塊] ──? [OpenAI API]│▼ [結果組裝與返回] 1.2 技術選型 組件技術棧版本要求…

Oracle實用參考(13)——Oracle for Linux物理DG環境搭建(2)

13.2. Oracle for Linux物理DG環境搭建 Oracle 數據庫的DataGuard技術方案,業界也稱為DG,其在數據庫高可用、容災及負載分離等方面,都有著非常廣泛的應用,對此,前面相關章節已做過較為詳盡的講解,此處不再贅述。 需要說明的是, DG方案又分為物理DG和邏輯DG,兩者的搭建…

【論文閱讀29】區間預測CIPM(2025)

這篇論文主要研究的是滑坡位移的區間預測方法&#xff0c;提出了一種新型的預測模型&#xff0c;叫做復合區間預測模型&#xff08;CIPM&#xff09;&#xff0c;并以三峽庫區的白家堡滑坡為案例進行了應用和驗證。論文的核心內容和貢獻包括&#xff1a; 背景與問題 滑坡位移預…

Linux 文件系統底層原理筆記:磁盤結構、ext2 文件系統與軟硬鏈接解析

文章目錄 一、理解硬件1.1 磁盤、服務器、機柜、機房1.2 磁盤物理結構1.3 磁盤的存儲結構1.4 磁盤的邏輯結構1.4.1 理解過程1.4.2 真實過程 1.5 CHS && LBA地址 二、引入文件系統2.1 引入"塊"概念2.2 引入"分區"概念2.3 引入"inode"概念…

75Qt窗口_Qt窗口概覽

Qt 窗? 是通過 QMainWindow類 來實現的。 QMainWindow 是?個為??提供主窗?程序的類&#xff0c;繼承? QWidget 類&#xff0c;并且提供了?個預定義的布局。 QMainWindow 包含 ?個菜單欄&#xff08;menu bar&#xff09;、多個?具欄(tool bars)、多個浮動窗?&#x…

Appium+python自動化(九)- 定位元素工具

簡介 環境搭建好了&#xff0c;其他方面的知識也準備的差不多了&#xff0c;那么就開始下一步元素定位&#xff0c;元素定位主要介紹如何使用uiautomatorviewer&#xff0c;通過定位到頁面上的元素&#xff0c;然后進行相應的點擊等操作. 此外在介紹另一款工具&#xff1a;Insp…

apipost將token設置為環境變量

右上角 可以新增或者是修改當前的環境 環境變量增加一個token,云端值和本地值可以不用寫 在返回token的接口里設置后執行操作&#xff0c;通常是登錄的接口 右側也有方法提示 //設置環境變量 apt.environment.set("token", response.json.data.token); 在需要傳t…

【Docker 02】Docker 安裝

&#x1f308; 一、各版本的平臺支持情況 ? 1. Server 版本 Server 版本的 Docker 就只有個命令行&#xff0c;沒有界面。 Platformx86_64 / amd64arm64 / aarch64arm(32 - bit)s390xCentOs√√Debian√√√Fedora√√Raspbian√RHEL√SLES√Ubuntu√√√√Binaries√√√ …

青少年編程與數學 01-011 系統軟件簡介 08 Windows操作系統

青少年編程與數學 01-011 系統軟件簡介 08 Windows操作系統 1. Windows操作系統的起源與發展1.1 早期版本&#xff08;1985-1995&#xff09;1.2 Windows 9x系列&#xff08;1995-2000&#xff09;1.3 Windows NT系列&#xff08;1993-2001&#xff09;1.4 Windows XP及以后版…