本文內容**
printf 可能是許多程式設計師在開始學習c 語言時接觸到的第二個函式(我猜第乙個是main),說
起來,自然是老朋友了,可是,你對這個老朋友了解多嗎?你對它的那個孿生兄弟sprintf 了解多
嗎?在將各種型別的資料構造成字串時,sprintf 的強大功能很少會讓你失望。
由於sprintf 跟printf 在用法上幾乎一樣,只是列印的目的地不同而已,前者列印到字串中,
後者則直接在命令列上輸出。這也導致sprintf 比printf 有用得多。所以本文著重介紹sprintf,有時
也穿插著用用pritnf。
sprintf 是個變參函式,定義如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前兩個引數型別固定外,後面可以接任意多個引數。而它的精華,顯然就在第二個引數:
格式化字串上。
printf 和sprintf 都使用格式化字串來指定串的格式,在格式串內部使用一些以「%」開頭的
格式說明符(format specifications)來佔據乙個位置,在後邊的變參列表中提供相應的變數,最終
函式就會用相應位置的變數來替代那個說明符,產生乙個呼叫者想要的字串。
格式化數字字串
sprintf 最常見的應用之一莫過於把整數列印到字串中,所以,spritnf 在大多數場合可以替代
itoa。如:
//把整數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 個位置,左對齊
fgets函式 sprintf函式
char fgets char restrict s,int n,file restrict stream 第乙個引數為資料存放的陣列,第二個引數為最大長度,第三個引數為輸入源,我們從鍵盤讀入,引數為stdin 可以看到fgets 讀取的字串長度包含了結尾的 0 遍歷陣列時要注意下標越界。strle...
sprintf函式詳解
printf 可能是許多程式設計師在開始學習c 語言時接觸到的第二個函式 我猜第乙個是main 說 起來,自然是老朋友了,可是,你對這個老朋友了解多嗎?你對它的那個孿生兄弟sprintf 了解多 嗎?在將各種型別的資料構造成字串時,sprintf 的強大功能很少會讓你失望。由於sprintf 跟pr...
sprintf函式詳解
sprintf 將字串格式化。標頭檔案 include 語法 int sprintf string format,mixed args 返回值 字串長度 strlen 1.處理字元方向。負號時表時從後向前處理。2.填空字元。0 的話表示空格填 0 空格是內定值,表示空格就放著。3.字元總寬度。為最小...