printf

C程序  http://see.xidian.edu.cn/cpp/html/201.html  C語言中文網html

printf命令模仿C程序庫(library)裏的printf()庫例程(庫函數)(library routine)。它幾乎複製了
該函數的全部功能。不過在Shell層級的版本上,會有些差別。因爲printf的行爲是由POSIX
標準所定義,所以使用printf的腳本比使用echo移植性好。mysql

當在源程序中使用到庫函數printf時,先要用include命令將( )頭文件包含進來。
(A)stdio.h (B)string.h (C)math.h (D)stdlib.h
Linux中程序如何調用printf等C庫函數?
另外程序被加載時,load程序如何連接libc庫中的printf函數呢
printf函數是在加載時動態連接libc.so庫進行調用的linux

我知道printf的函數原型是在stdio.h這個文件裏的,
printf這函數具體的代碼是在哪裏呢?C的標準庫函數
glibc是GUN的C語言庫函數,
是否是說全部的C語言的庫函數都在這個glibc裏面,在linux系統裏,安裝了glibc就至關於把glibc的源代碼編譯了,編譯以後就應該是二進制文件
而stdio.h這個頭文件裏面有printf等有關輸入輸出的庫函數的原型。
全部的c標準庫,都被glibc實現了。下glibc代碼,用grep ,cscope, ctags 找,都行。
find / -name "*.c" | xargs grep "printf"sql

[root@localhost ~]# ldd /bin/grep
        linux-vdso.so.1 =>  (0x00007fffe89ff000)
        libpcre.so.0 => /lib64/libpcre.so.0 (0x0000003b35000000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003b29000000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003b28800000)函數

echo 'export JAVA_HOME=/usr/local/jdk1.6' >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib3d

1.調用格式爲  printf("<格式化字符串>", <參量表>);
  其中格式化字符串包括兩部份內容: 一部分是正常字符, 這些字符將按原樣輸出; 另外一部分是格式化規定字符, 以"%"開始, 後跟一個或幾個規定字符, 用來肯定輸出內容格式。參量表是須要輸出的一系列參數, 其個數必須與格式化字符串所說明的輸出參數個數同樣多, 各參數之間用","分開, 且順序一一對應, 不然將會出現意想不到的錯誤。

2.格式化字符

%d 十進制有符號整數
%u 十進制無符號整數
%f 浮點數
%s 字符串
%c 單個字符
%p 指針的值
%e 指數形式的浮點數
%x, %X 無符號以十六進制表示的整數
%0 無符號以八進制表示的整數
%g 自動選擇合適的表示法
說明:
(1). 能夠在"%"和字母之間插進數字表示最大場寬。 例如: %3d 表示輸出3位整型數, 不夠3位右對齊。 %9.2f 表示輸出場寬爲9的浮點數, 其中小數位爲2, 整數位爲6, 小數點佔一位, 不夠9位右對齊。%8s 表示輸出8個字符的字符串, 不夠8個字符右對齊。 若是字符串的長度、或整型數位數超過說明的場寬, 將按其實際長度輸出。 但對浮點數, 若整數部分位數超過了說明的整數位寬度, 將按實際整數位輸出; 若小數部分位數超過了說明的小數位寬度, 則按說明的寬度以四捨五入輸出。另外, 若想在輸出值前加一些0, 就應在場寬項前加個0。 例如: %04d 表示在輸出一個小於4位的數值時, 將在前面補0使其總寬度爲4位。若是用浮點數表示字符或整型量的輸出格式, 小數點後的數字表明最大寬度, 小數點前的數字表明最小寬度。 例如: %6.9s 表示顯示一個長度不小於6且不大於9的字符串。若大於9, 則第9個字符之後的內容將被刪除。
(2). 能夠在"%"和字母之間加小寫字母l, 表示輸出的是長型數。例如: %ld 表示輸出long整數, %lf 表示輸出double浮點數。
(3). 能夠控制輸出左對齊或右對齊, 即在"%"和字母之間加入一個"-" 號可說明輸出爲左對齊, 不然爲右對齊。例如: %-7d 表示輸出7位整數左對齊,%-10s 表示輸出10個字符左對齊。

3. 一些特殊規定字符
\n換行
\f清屏並換頁
\r回車
\t Tab符
\xhh表示一個ASCII碼用16進表示,
其中hh是1到2個16進制數指針

相關文章
相關標籤/搜索