一,sprintf函式
原型:int sprintf(char *str, const char *format, ...)
作用是格式化字串,具體功能如下所示:
(1)將數字為變數轉換字串。
(2)得到整型變數的16進製制和8進製字串。
(3)連線多個字串。
例子:
int main(int argc, char **ar**)
; const char *s1 = "hello";
const char *s2 = "world";
int data = 1024;
sprintf(str, "%d", data);//十進位制
printf("十進位制data:%s\n",str);
sprintf(str, "0x%x", data);//十六進製制
printf("十六進製制data:%s\n",str);
sprintf(str, "0%o", data);//八進位制
printf("八進位制data:%s\n",str);
sprintf(str,"%s-%s",s1,s2);
printf("data:%s\n",str);
return 0;
}
輸出結果:
十進位制data:1024
十六進製制data:0x400
八進位制data:02000
data:hello-world
二,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 可以看成% 的乙個特例 %[^ ](注意^後面有乙個空格!)
例子:
int main(int argc, char **ar**)
; char host[128] = ;
char port[8] = ;
sscanf(s, "%[^:]://%[^:]:%[1-9]",protocol,host,port);
printf("protocol:%s\n",protocol);
printf("host:%s\n",host);
printf("port:%s\n",port);
return 0;
}
輸出結果
再看乙個轉換成非字串形式,這裡轉換成整形。在時間字串中提取年月日小時分鐘秒儲存在整形變數中
int main(int argc, char **ar**)
輸出結果
year:2019
month:10
day:3
hour:0
min:1
sec:29
三,snprintf函式
原型:int snprintf(char *restrict buf, size_t n, const char * restrict format, ...)
snprintf函式是sprintf函式的更加安全版本,考慮到字串的位元組數,防止了字串溢位。最多從源串中拷貝n-1個字元到目標串中,然後再在後面加乙個0。所以如果目標串的大小為n 的話,將不會溢位。
四,fprintf,fscanf函式
這兩個函式和sprintf,sscanf類似。只是把緩衝區換成了檔案。
sprintf sscanf中的乙個小坑
char buf 32 sprintf buf,s,d test 100 char out 32 int i 0 sscanf buf,s,d out,i 這段 開始以為會正常執行,結果卻是crash。sscanf在解析 s的時候遇到空格 指標符號 n才會停止解析,而這個 s後面的逗號基本上是乙個擺...
函式基礎 匿名函式,函式,箭頭函式,立即執行函式
doctype html html lang en head meta charset utf 8 meta name viewport content width device width,initial scale 1.0 title document title head body body ...
函式 常見函式
def fib n if n 1 return 1if n 2 return 1return fib n 1 fib n 2 def hannuo n,a,b,c n 表示有n個盤子 a 代表第乙個塔,開始的塔 b 代表第二個塔,過渡塔 c 代表第三個塔,目標塔 d.在 中n 2,這個分支可以不要,...