c語言 sscanf,sprintf函式 使用總結,如下
1、sprintf函式
sprintf函式原型為int sprintf(char *str, const char *format, ...)。作用是格式化字串,具體功能如下所示:
(1)將數字變數轉換為字串。
(2)得到整型變數的16進製制和8進製字串。
(3)連線多個字串。
char str[256] = ;
int data = 1024;
//將data轉換為字串
sprintf(str,"%d",data);
//獲取data的十六進製制
sprintf(str,"0x%x",data);
//獲取data的八進位制
sprintf(str,"0%o",data);
const char *s1 = "hello";
const char *s2 = "world";
//連線字串s1和s2
sprintf(str,"%s %s",s1,s2);
2、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 可以看成% 的乙個特例 %[^ ](注意^後面有乙個空格!)
const char *s = "";
char protocol[32] = ;
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);
3、snprintf函式
snprintf函式是sprintf函式的更加安全版本,考慮到字串的位元組數,防止了字串溢位。函式形式為:int snprintf(char *restrict buf, size_t n, const char * restrict format, ...)
;。最多從源串中拷貝n-1個字元到目標串中,然後再在後面加乙個0。所以如果目標串的大小為n 的話,將不會溢位。
C語言 C語言組成
c語言由多個 c 檔案和 件組成 c c語言源 檔案 h c語言標頭檔案 c檔案 組成 1 標頭檔案 include include student.h 包括起來的是系統的標頭檔案 包含起來的是自己定義的檔案 2 巨集定義 define a.不帶引數的巨集 define 巨集名 替換的內容 defi...
從C語言到C 語言
c 讀作 c加加 是 c plus plus 的簡稱。顧名思義,c 是在c語言 的基礎上增加新特性。從語法上看,c語言是 c 的一部分,c語言 幾乎不用修改就能夠以 c 的方式編譯。對於c和c 的關係,有很多種說法,新人很容易認為c 是c的公升級版,c 比c要高階,c 高大上,c過時了,這種想法不一...
C語言 C語言之continue
c語言迴圈 c 語言中的continue語句有點像break語句。但它不是跳出該迴圈語句,continue是跳過本次迴圈直接開始下一次迴圈的。在for迴圈裡,continue會跳過本次迴圈,但是自增語句仍然會執行,而在while和do while語句裡嘖是跳過迴圈重新執行判斷語句 課堂作業內容為 輸...