1、前言
2、sprintf函式
sprintf函式原型為int sprintf(char *str, const char *format, ...)。作用是格式化字串,具體功能如下所示:
(1)將數字變數轉換為字串。
(2)得到整型變數的16進製制和8進製字串。
(3)連線多個字串。
舉例如下所示:
1 char str[256] = ;
2 int data = 1024;
3 //將data轉換為字串
4 sprintf(str,"%d",data);
5 //獲取data的十六進製制
6 sprintf(str,"0x%x",data);
7 //獲取data的八進位制
8 sprintf(str,"0%o",data);
9 const char *s1 = "hello";
10 const char *s2 = "world";
11 //連線字串s1和s2
12 sprintf(str,"%s %s",s1,s2);
3、sscanf函式
sscanf函式原型為int sscanf(const char *str, const char *format, ...)。將引數str的字串根據引數format字串來轉換並格式化資料,轉換後的結果存於對應的引數內。具體功能如下:
(1)根據格式從字串中提取資料。如從字串中取出整數、浮點數和字串等。
(2)取指定長度的字串
(3)取到指定字元為止的字串
(4)取僅包含指定字符集的字串
(5)取到指定字符集為止的字串
sscanf可以支援格式字元%:
(1)-: 表示範圍,如:%[1-9]表示只讀取1-9這幾個數字 %[a-z]表示只讀取a-z小寫字母,類似地 %[a-z]只讀取大寫字母
(2)^: 表示不取,如:%[^1]表示讀取除'1'以外的所有字元 %[^/]表示除/以外的所有字元
(3),: 範圍可以用","相連線 如%[1-9,a-z]表示同時取1-9數字和a-z小寫字母
(4)原則:從第乙個在指定範圍內的數字開始讀取,到第乙個不在範圍內的數字結束%s 可以看成% 的乙個特例 %[^ ](注意^後面有乙個空格!)
1 const char *s = "";
2 char protocol[32] = ;
3 char host[128] = ;
4 char port[8] = ;
5 sscanf(s,"%[^:]://%[^:]:%[1-9]",protocol,host,port);
6 7 printf("protocol: %s\n",protocol);
8 printf("host: %s\n",host);
9 printf("port: %s\n",port);
10
4、snprintf函式
snprintf函式是sprintf函式的更加安全版本,考慮到字串的位元組數,防止了字串溢位。函式形式為:int snprintf(char *restrict buf, size_t n, const char * restrict format, ...);。最多從源串中拷貝n-1個字元到目標串中,然後再在後面加乙個0。所以如果目標串的大小為n 的話,將不會溢位。
5、測試程式
1 #include 2 #include 3
4 #define ip_str_len 18
5 #define mac_str_len 18
6 #define mac_bit_len 6
7 #define little_endian 0
8 #define big_endian 1
9 10 typedef unsigned char uchar;
11 typedef unsigned int uint;
12 13 int big_little_endian()
14 20
21 uint ipstr2int(const char * ipstr)
22 34
35 char *int2ipstr(const uint ip, char *ipstr, const uint ip_str_len)
36 53
55 char *mac2str(const unsigned char *mac,char *mac_str,const uint mac_str_len)
56 62
63 int main()
64 ;
66 char mac_str[mac_str_len] = ;
67 unsigned char mac[mac_bit_len] = ;
68 const char *ipstr = "10.0.3.193";
69 unsigned int ip;
70 int2ipstr(167773121,ip_str,ip_str_len);
71 mac2str(mac,mac_str,mac_str_len);
72 ip = ipstr2int(ipstr);
73 printf("%s\n",ip_str);
74 printf("%s\n",mac_str);
75 printf("ip:%u\n",ip);
76 return 0;
77 }
程式執行結果如下所示:
參考**:
C語言sprintf與sscanf函式
原文 1 前言 2 sprintf函式 sprintf函式原型為int sprintf char str,const char format,作用是格式化字串,具體功能如下所示 1 將數字變數轉換為字串。2 得到整型變數的16進製制和8進製字串。3 連線多個字串。3 sscanf函式 sscanf函...
C語言sprintf 函式
int sprintf char str,const char format,傳送格式化輸出到str所指向的字串。下面是 sprintf 函式的宣告。int sprintf char str,const char format,如果成功,則返回寫入的字元總數,不包括字串追加在字串末尾的空字元。如果失...
C語言sprintf與sscanf函式 總結
1 前言 2 sprintf函式 sprintf函式原型為int sprintf char str,const char format,作用是格式化字串,具體功能如下所示 1 將數字變數轉換為字串。2 得到整型變數的16進製制和8進製字串。3 連線多個字串。舉例如下所示 1 char str 256...