常用的函數

<stdio.h>標準輸入輸出函數
其中包含的一些常用的函數有
scanf(); scanf("%c",s)跟scanf(" %c",s)的區別,他們具有不同的效果。前者跟gerchat()效果一樣
後者的作用是接受第一個非空字符,會自動忽略空格,回車換行,製表等。因此這裏要注意。
scanf("%[^/n]",s) 的作用是接收輸入的任何字符,除了‘/n’。
sscanf()   sprintf()
這兩個函數是專門用來進行字符串輸入輸出的操作的,下面舉一個小例子
int n;char s[]="1234";
sscanf(s,"%d",&n);這個語句的作用是n的值被賦予1234
<string.h> 字符串處理函數庫
這裏面的關於字符串的操作比較多,就說一下處理函數mem*這一系列,希望能記住一點點。
memset(a,0,sizeof(a));這個函數的作用主要是給a這個數組初始化的。但是這個函數的操作是把數組當成字符串來進行操作的,也就是說在對整數類型的數字進行操作的時候,除了清0和全部清爲-1以外,其他的初始化一定要慎重使用。
memcpy(b,a,sizeof(a));的作用是把數組a的值賦給b。
memcmp(數組1,數組2,要比較長度L) 數組比較,把兩數組的前L個字節看成是兩個字符串做strcmp一樣的比較
memmove(目標數組,被拷貝數組,要拷貝長度) 數組複製,其和memcpy的不同之處是兩個數組可以有重疊部分,也就是可以實現fp中move的作用
例子  memmove(a+i+1,a+i,sizeof(a[0]*k));
<stdlib.h>標準函數庫
srand((unsigned)time(null));
rand();rand不接受參數,一般是返回一個unsigned類型的。可以用取模來得到想要的隨即數在同一次運行中,初始化種子後得到的rand是相同的。這樣更加方便調試。如果想得到不同的就要在依次開始就初始化一次,僅僅初始化一次。
<limits.h>
這個庫裏面沒有函數,但是有一些常用的極限,比如INT_MAX(int變量的上限)  LONG_MAX,ULONG_MAX(unsigned long的上限)等等,所以是很有用的。
<math.h>這個庫裏面用到的數學函數,值得注意的有:pow是個雞肋,一般不要使用

gets和puts分別是整行讀入和輸出字符串。gets由於可能回導致意外結果的發生,通常不推薦使用,但是若給定了字符串的長度,使用起來是是十分安全的。同樣還有fgets和fputs.據說gets puts 系列比 scanf(%s)  scanf("%[^/n]")要快不少。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章