首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C/C++ 字符串處理函數大全:ctype.h、stdio.h、stdlib.h、string.h 四大庫完整總結

     編輯:關於C語言

一、<ctype.h> 字符分類與轉換函數

函數原型:int f(int c),返回非零表示真,零表示假。

函數功能
isalnum判斷是否為字母或數字
isalpha判斷是否為字母
iscntrl判斷是否為控制字符
isdigit判斷是否為十進制數字
isgraph判斷是否可打印且非空格
islower判斷是否為小寫字母
isprint判斷是否可打印(含空格)
ispunct判斷是否為標點符號
isspace判斷是否為空白字符(\n, \t, \v, \r, 空格)
isupper判斷是否為大寫字母
isxdigit判斷是否為十六進制數字
tolower大寫轉小寫
toupper小寫轉大寫

二、<stdio.h> 字符/字符串輸入輸出

函數說明
getchar()從標準輸入讀取單字符,返回 int
gets(char *s)讀取一行到數組(不安全,已棄用)
putchar(int c)輸出單字符
puts(const char *s)輸出字符串並自動換行
sprintf(char *s, fmt, ...)格式化輸出到字符串緩衝區
sscanf(char *s, fmt, ...)從字符串按格式讀取數據

三、<stdlib.h> 字符串轉數值函數

簡易版(無錯誤檢測)

  • atoi(const char *nptr) → int
  • atol(const char *nptr) → long
  • atof(const char *nptr) → double

行為:跳過前導空格,遇非數字字符或 \0 停止。

增強版(支持進制、錯誤定位)

函數原型特性
strtollong strtol(nptr, endptr, base)base 2-36 或 0(自動識別 0x/0 前綴),endptr 返回結束位置
strtoulunsigned long strtoul(nptr, endptr, base)無符號長整型版本
strtoddouble strtod(nptr, endptr)雙精度浮點數,支持科學計數法

返回值:轉換結果;溢出時返回 ERANGE 並置 errno。

四、<string.h> 字符串核心操作

1. 字符操作函數

函數說明注意
strcpy(s1, s2)拷貝 s2 到 s1需保證 s1 空間足夠
strncpy(s1, s2, n)拷貝前 n 字符不保證以 \0 結尾
strcat(s1, s2)追加 s2 到 s1 末尾自動添加 \0
strncat(s1, s2, n)追加 s2 前 n 字符自動添加 \0

技巧:strcpy(s1, s2 + x) 從第 x 字符開始拷貝;strncpy(s1, s2 + x, n) 從第 x 字符拷貝 n 個。

2. 比較函數

  • strcmp(s1, s2):逐字符比較,返回 <0, 0, >0
  • strncmp(s1, s2, n):比較前 n 字符

3. 查找函數

4. 內存操作函數(針對內存塊,非字符串)

函數功能
strchr(s, c)查找字符 c 首次出現位置
strrchr(s, c)查找字符 c 最後出現位置
strstr(s1, s2)查找子串 s2 在 s1 中首次位置
strspn(s1, s2)s1 中僅含 s2 字符的初始段長度
strcspn(s1, s2)s1 中不含 s2 字符的初始段長度
strpbrk(s1, s2)查找 s1 中首個出現在 s2 的字符
strtok(s1, s2)按 s2 中字符分割 s1,**會修改原串**
函數功能重疊處理
memcpy(s1, s2, n)拷貝 n 字節源目標不可重疊
memmove(s1, s2, n)拷貝 n 字節允許重疊
memcmp(s1, s2, n)比較前 n 字節-
memchr(s, c, n)前 n 字節查找字符 c-
memset(s, c, n)前 n 字節置為字符 c常用於初始化

5. 其他常用函數

  • strlen(s):返回字符串長度(不含 \0)
  • strerror(errnum):返回錯誤碼對應的描述字符串
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved