功能格式化數字字串把格式化的資料寫入某個字串
緩衝區。
原型
int sprintf( char *buffer, const char *format, [ argument] … );
引數列表
buffer:char型指標,指向將要寫入的字串的緩衝區。
format:格式化字串。
[argument]...:可選引數,可以是任何型別的資料。
返回值
返回寫入buffer 的字元數,出錯則返回-1.
//把整數123列印成乙個字串儲存在s中。
sprintf(s, "%d", 123); // "123"
//可以指定寬度,不足的左邊補空格:
sprintf(s, "%8d%8d", 123, 4567); // " 123 4567"
//當然也可以左對齊:
sprintf(s, "%-8d%8d", 123, 4567); // "123 4567"
//也可以按照16進製制列印:
sprintf(s, "%8x", 4567); //小寫16進製制,寬度佔8個位置,右對齊
sprintf(s, "%-8x", 4568); //大寫16進製制,寬度佔8個位置,左對齊
控制浮點數列印格式(預設保留小數點後6位)
sprintf(s, "%f", 3.1415926); // "3.141593"
有時我們希望自己控制列印的寬度和小數字數,這時就應該使用:」%m.nf」 格式,其中m表示列印的寬度,n表示小數點後的位數。注意:會四捨五入。
sprintf(s, "%10.3f", 3.1415626); // " 3.142"
sprintf(s, "%-10.3f", 3.1415626); // "3.142 "
sprintf(s, "%.3f", 3.1415626); // "3.142"
對於如下**:
int i = 123;
sprintf(s, "%.3f", i);
其結果是什麼? 「0.000」。。原因是引數壓棧時呼叫者並不知道跟 i 相對應的格式控制符是個」%f」。而函式執行時函式本身則並不知道當年被壓入棧裡的是個整數,於是儲存整數 i 的那4個位元組就被強行作為浮點數格式來解釋了,導致出錯了
sprintf(s, "%.3f", (float)i); // 結果為 "123.000"
功能常見用法sscanf 讀取格式化的字串中的資料。
char buf[512];
sscanf("123456 ", "%s", buf);
printf("%s\n", buf); // "123456"
取指定長度的字串。如在下例中,取最大長度為4位元組的字串
sscanf("123456 ", "%4s", buf);
printf("%s\n", buf); // "1234"
取到指定字元為止的字串。如在下例中,取遇到空格為止字串
sscanf("123456 abcdedf", "%[^ ]", buf);
printf("%s\n", buf); // "123456"
取僅包含指定字符集的字串。如在下例中,取僅包含1到9和小寫字母的字串
sscanf("123456abcdedfbcdef", "%[1-9a-z]", buf);
printf("%s\n", buf); // "123456abcdedf"
char s = "abcdef 1987:10:20";
char buf[512];
sscanf(s, "%[a-z0-9, ,:]", buf); // "abcdef 1987:10:20"
取到指定字符集為止的字串。如在下例中,取遇到大寫字母為止的字串
sscanf("123456abcdedfbcdef", "%[^a-z]", buf);
printf("%s\n", buf); // "123456abcdedf"
給定乙個字串」iios/12ddwdff@122」,獲取 / 和 @ 之間的字串,先將 「iios/」過濾掉,再將非』@』的一串內容送到buf中
sscanf("iios/12ddwdff@122", "%*[^/]/%[^@]", buf);
printf("%s\n", buf); // "12ddwdff"
給定乙個字串「「hello, world」,僅保留world。(注意:「,」之後有一空格)
sscanf(「hello, world」, "%*s%s", buf); //%*s表示第乙個匹配到的%s被過濾掉,即hello被過濾了,如果沒有空格則結果為null。
printf("%s\n", buf); // "world"
參考:突然好想曬太陽
格式轉化函式 sscanf, sprintf
標頭檔案 stdio.h 簡介1.對於字串與數值的相互轉換,使用sscanf和sprintf相當方便。我曾經由於忘記sscanf這個函式,自己用遞迴和迴圈,寫了乙個從字串轉換為雙精度的函式。2.從數值到字串可以用sprintf 從字串到數值可以用sscanf。3.sprintf函式可以對字元陣列進行...
C語言 sscanf,sprintf函式 使用總結
c語言 sscanf,sprintf函式 使用總結,如下 1 sprintf函式 sprintf函式原型為int sprintf char str,const char format,作用是格式化字串,具體功能如下所示 1 將數字變數轉換為字串。2 得到整型變數的16進製制和8進製字串。3 連線多個...
常成員,常函式,常物件
知識點1.常物件中的任何型別的資料成員 無論私有還是公有 的值都不能被改變。知識點2.常物件能呼叫的 1.公有的常成員函式 2.建構函式 3.公有的靜態函式 知識點3.常物件與常成員函式只有同時存在才都有意義 知識點4.普通物件既可以呼叫常成員函式,也可以呼叫非常成員函式 知識點5.常成員函式不能更...