c語言常用IO參數

%d %i 十進位整數
%u unsigned 十進位整數
%x unsigned 16進位整數,小寫表示(a-f)
%X unsigned 16進位整數,大寫表示(A-F)
%o unsigned 8進位整數
以上加-和數字表示左對齊最少幾位,如%-9d表示左切齊最少印9位
以上加+和數字表示右對齊最少幾位,如%+9d表示右切齊最少印9位,不足處補空白
以上加+和0開頭的數字表示右對齊最少幾位,不足補0,如%+09d表示右切齊最少印9位,不足處補0
%ld 以十進位印出long
%lld 以十進位印出long long
%f浮點數float
%e %E科學表示法浮點數double,%e小寫 %E大寫
%g %G依照double的數值自動選擇以%f或%e格式印出
以上加-和具有小數點的數字表示左對齊最少幾位,如%-9.2f表示左切齊最少印9位,其中小數點以下2位
以上加+和具有小數點的數字表示右對齊最少幾位,如%=9.2f表示右切齊最少印9位,其中小數點以下2位
%c unsigned char
%s string(array of char terminated by 0)
%p pointer to void
%% 印出%

用C來寫複數

GNU C99以前通常是用結構(struct)來表示,簡單的例子如下
------------------------------------------------------ 
#include < stdio.h >

struct my_complex {
double real;
double imag;
};
int main(void){
struct my_complex z = {42.0, 42.0};

printf("z = %f + %fI\n",x.real, x.imag);

return 0;
}
-----------------------------------------------------
C99提供了一個方便的表示方法,在complex.h裡面
#include < stdio.h >
#include < complex.h >
int main (void){
complex double z = 42.0 + 42.0*I;

printf("z = %f + %fI\n", creal(z), cimag(z));

return 0;
}
----------------------------------------------------- 
— Function: double creal (complex double z) 
— Function: float crealf (complex float z) 
— Function: long double creall (complex long double z)These functions return the real part of the complex number z.
— Function: double cimag (complex double z) 
— Function: float cimagf (complex float z) 
— Function: long double cimagl (complex long double z)These functions return the imaginary part of the complex number z.
 
詳細的內容可以參考:
http://www.gnu.org/s/libc/manual/html_node/Complex-Numbers.html#Complex-Numbers 

apt 常用指令

本文取自:http://plog.longwin.com.tw/my_note-unix/2005/05/01/use_apt

伺服器列表
/etc/apt/source.list

系統升級相關:
  • apt-get upgrade => 軟體升級
  • apt-get dist-upgrade => 系統升級
  • 更多詳細可見: SoftwareUpgrading
=======
aptitude
=======
1.aptitude install套件名稱
單純安裝指定套件

其他的可以參考apt-get
=======
apt-get
=======
1.apt-get update
更新套件資訊,要升級之前,最好都先執行一次本指令和 Server 端的資訊同步一下

2.apt-get check
檢查你系統上套件的相依性狀況

3.apt-get dist-upgrade 和 apt-get upgrade
執行整個升級動作,建議用 apt-get dist-upgrade 比較好

4.apt-get install 套件名稱
安裝某一個套件及其相關的套件

5.apt-get remove 套件名稱 (含設定檔等完整移除: apt-get --purge remove 套件名稱)
移除某套件,和 rpm -e 功能一樣,同時還會幫您把相關的套件一併移除

6.apt-get source 套件名稱
抓回 source rpm
例: apt-get source --compile zhcon
抓回 source rpm 並編譯成 binary rpm
--compile 參數就如同 rpm -ba 一般

7.apt-get clean
刪除下載回來的檔案
=========
apt-cache
=========
1.apt-cache showpkg
顯示套件資訊
例: apt-cache showpkg zhcon

2.apt-cache stats
顯示相關的統計資訊

3.apt-cache dump
顥示 cache 中每個套件的簡短資訊

4.apt-cache unmet
檢查所有未符合相依性的相關資訊

5.apt-cache show
顯示套件資訊,同 rpm -qi 一般

6.apt-cache search
尋找檔案  例: apt-cache search zhcon

7.apt-cache depends
顯示套件的相依性  例: apt-cache depends zhcon

8.apt-cache pkgnames
尋找符合的套件名稱  例: $ apt-cache pkgnames openss
openssh-askpass
openssl096
openssl-perl
openssl095a
openssl-python
openssh-clients
openssl-devel
openssh-askpass-gnome
openssh
openssl
openssh-serve


==========
apt-config
==========
1.apt-config dump
顯示目前的設定狀態

參考
http://www.linux.org.tw/~candyz/APT-HOWTO_CLE.txt
http://www.debian.org/doc/manuals/apt-howto/ 
其它備註
  • 移除多餘套件(Library): apt-get remove --purge `deborphan`

------------------------------------------------------------------
apt-get install package --reinstall 重新安裝套件
apt-get -f install 修復安裝 "-f = --fix-missing"
apt-cache rdepends package 是查看該套件被哪些套件依賴
apt-get build-dep package 安裝相關的編譯環境
apt-get source package 下載該套件的原始碼
apt-get clean && apt-get autoclean 清理沒用的套件
apt-get check 檢查是否有損壞的相依性
------------------------------------------------------------------
aptitude
套件管理程式,不喜歡打上述指令可以用這個。

    解決 /usr/bin/ld: cannot find -lxxx 問題

    問題:
    在linux環境編譯應用程式或lib的source code時常常會出現如下的錯誤訊息:

    • /usr/bin/ld: cannot find -lxxx
    Example:
    • /usr/bin/ld: cannot find -lc
    其中xxx即表示函式庫文件名稱,如上例的:libc.so。
    其命名規則是:lib+庫名(即xxx)+.so。

    會發生這樣的原因有以下三種情形:
    1 系統沒有安裝相對應的lib
    2 相對應的lib版本不對
    3 lib(.so檔)的symbolic link 不正確,沒有連結到正確的函式庫文件(.so)
    對於上述三種原因有一篇文章寫的很棒可參考這一篇文章的第4點:
    gcc命令祥解

    解決方法:
    (1)先判斷在/usr/lib 下的相對應的函式庫文件(.so) 的 symbolic link 是否正確
    若不正確改成正確的連結目標即可解決問題。

    (2)若不是 symbolic link 的問題引起,而是系統缺少相對應的lib安裝lib即可解決。

    (3)如何安裝缺少的lib:
    以上面三個錯誤訊息為例:
    錯誤1缺少libc的LIB
    以Ubuntu為例:
    先搜尋相對應的LIB再進行安裝的作業如:
    apt-cache search libc-dev
    實例:
    在進行輸入法gcin的 Source Code的編譯時出現以下的錯誤訊息:
    /usr/bin/ld: cannot find -lXtst
    經檢查後發現是:
    lib(.so檔)的symbolic link 不正確

    解決方法如下:
    cd /usr/lib
    ln -s libXtst.so.6 libXtst.so
    如果在/usr/lib的目錄下找不到 libXtst.so 檔,那麼就表示系統沒有安裝libXtst的函式庫。
    解法如下:
    apt-get install libxtst-dev

    內容取自:波哥的IT私房菜

    常用的NVCC指令

    1。-deviceemu
       用cpu模擬模式。常用於debug,但是要小心threads數目。單純就是software contral
    2。-use_fast_math
       將可以用GPU硬體算數學涵數都用GPU計算
    3。-maxrregcount N
       限制每一個threads所用的register大小。if kernel超過了,就會存在local memory
    4。--ptxas-options=-v
       回報用的memory量。
    5。-arch sm_xx xx是CUDA版本(滿多涵數都要指定版本)
       指定compiler的版本
    6。-l + lib名稱 ex:-lcublas
       連結標頭檔
    7。-l
       指定尋找的lib路徑
    8。-I
       指定尋找的標頭檔路徑

    2010/11/27 更新部分
    nvcc -g -I/home/zcli/NVIDIA_GPU_Computing_SDK/C/common/inc -L/home/zcli/NVIDIA_GPU_Computing_SDK/C/common/lib/linux cudaapi.cu  -lrt /home/zcli/NVIDIA_GPU_Computing_SDK/C/lib/libcutil_x86_64.a

    今天在試cutil.h一些計時的api時,一直undefine reference,一整個快發瘋,不是連結lib path跟header path就好了嗎?看了一個下午的網路,還是搞不懂為什麼...
    大概知道就是我沒有連結到lib ,加了-lrt那段,意思好像是靜態連結資料庫的作法,實際作用完全搞不懂。再找機會來研究研究。
    另外補充一下,可以直接打-lcutil_x86_64,就編過了....好像是因為cudatookit在3.0版的名稱改變了T_T

    其他有用到再打上來>"<