strcmp和strncmp的區別運用

2021-10-04 15:41:48 字數 989 閱讀 5418

//**int main(void){

char str1[32] = 「sang」;

char str2[32];

int ret;

printf(「請輸入您的姓名:」);

scanf("%s",str2);

//gets(str2);

ret = strncmp(str1,str2,4);

printf(「ret = %d\n」,ret);

return 0;*/

上述這個專案無論你輸入多少個字元輸出的結果都會是大於或等於0的結果,,因為規定了取輸入的前四個字元,而str1規定的是4個字元,所以無論輸入值為何都不會有負值的出現。

/**char str1[32] = 「sang」;

char str2[32];

int ret;

printf(「請輸入您的姓名:」);

scanf("%s",str2);

//gets(str2);

ret = strcmp(str1,str2);

printf(「ret = %d\n」,ret);*/

而這個專案中的函式變了,strcmp進行比較時則會比較你輸入的整個字元;相比較的情況下strncmp會比較size的字元,兩者有所不同。

注意

/**char str1[32] = 「sang」;

char str2[32];

int ret;

printf(「請輸入您的姓名:」);

//scanf("%s",str2);

//gets(str2);

fgets(str2,sizeof(str1),stdin);

ret = strcmp(str1,str2);

printf(「ret = %d\n」,ret);*/

專案當中如果改用fgets這個函式輸入的話,,專案永遠不會輸出0這個結果。應該將strcmp這個函式換為strncmp。才能解決問題。

實現strcmp 和strncmp 函式

strcmp 函式是字串比較函式,注意,此處比較不是根據字串的長度,而是ascii碼的大小,一旦遇到ascii不同的字元,就能返回結果,當前者大於後者時,返回乙個正數,當前者小於後者時,返回乙個負數。只有當每個字元都相同時,返回0。下面來實現我自己的strcmp 函式,有興趣的朋友也可以按照我的博文...

strcmp與strncmp的區別

strcmp與strncmp都是用來比較字串的,區別在於能否比較指定長度字串。c c 函式,比較兩個字串 設這兩個字串為str1,str2,若str1 str2,則返回零 若str1 str2,則返回正數 若str1 str2,則返回負數。即 兩個字串自左向右逐個字元相比 按ascii值大小相比較 ...

strcmp與strncmp的區別

strcmp與strncmp都是用來比較字串的,區別在於能否比較指定長度字串。c c 函式,比較兩個字串 設這兩個字串為str1,str2,若str1 str2,則返回零 若str1 str2,則返回正數 若str1 str2,則返回負數。即 兩個字串自左向右逐個字元相比 按ascii值大小相比較 ...