1. 程式人生 > >Easier Done Than Said?(應用到的知識)

Easier Done Than Said?(應用到的知識)

done log body 分配 -s target 小寫 二進制 ont

memset(b,0,sizeof(b))

對於大塊兒內存的分配,例如int arr[100];定義了數組arr,包含100個元素,如果你寫成int arr[100]=0;想將數組全部內容初始化為0,是不行的,連編譯都不能通過。這種情況的初始化,有兩種方法,一種是一個一個的初始化,如for(int i=0;i<100;i++)arr[i]=0;就完成了數組的初始化。另一種方法,就是使用memset:一個語句就夠了--memset(arr,0,sizeof(int)*100);
各參數解釋如下:arr是數組的首地址,0就是要講這些地址的內容賦值為0,sizeof(int)求出int類型的長度,乘以100就表示arr數組的整個長度。

strcmp():

頭文件:#include <string.h>

strcmp() 用來比較字符串(區分大小寫),其原型為:
int strcmp(const char *s1, const char *s2);

【參數】s1, s2 為需要比較的兩個字符串。

字符串大小的比較是以ASCII 碼表上的順序來決定,此順序亦為字符的值。strcmp()首先將s1 第一個字符值減去s2 第一個字符值,若差值為0 則再繼續比較下個字符,若差值不為0 則將差值返回。例如字符串"Ac"和"ba"比較則會返回字符"A"(65)和‘b‘(98)的差值(-33)。

【返回值】若參數s1 和s2 字符串相同則返回0。s1 若大於s2 則返回大於0 的值。s1 若小於s2 則返回小於0 的值。

註意:strcmp() 以二進制的方式進行比較,不會考慮多字節或寬字節字符;如果考慮到本地化的需求,請使用 strcoll() 函數。

【實例】對 4 組字符串進行比較。

#include <string.h>
main(){
    char *a = "aBcDeF";
    char *b = "AbCdEf";
    char *c = "aacdef";
    char *d = "aBcDeF";
    printf("strcmp(a, b) : %d\n", strcmp(a, b));
    printf("strcmp(a, c) : %d\n", strcmp(a, c));
    printf("strcmp(a, d) : %d\n", strcmp(a, d));
}

輸出結果:
strcmp(a, b) : 32
strcmp(a, c) :-31
strcmp(a, d) : 0

Easier Done Than Said?(應用到的知識)