//**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值大小相比較 ...