我有問題,使用strncmp
。據我看,理論上strncmp
應該返回0如果兩個字符串比較的字符是相等的;然而,當我進行比較時,代碼會發生錯誤併產生誤判(不等於字符,仍然會產生if子句)。這裏的代碼:strncmp不工作,因爲它應該
#include <stdio.h>
#include <string.h>
int main(){
char *frase1="some string";
char *frase2="another string";
char *frase3="some other string";
//Comparar frases desde inicio
if(strncmp(frase1, frase2, 200))printf("1<->2, 200 characters\n");
if(strncmp(frase1, frase3, 20))printf("1<->3, 20 characters\n");
if(strncmp(frase1, frase3, 4))printf("1<->3, 4 characteres\n");
return 0;
}
如果字符串是相等的(至少比較字符),他們應該打印消息;如果不是,則什麼也不做;所以我仍然不明白爲什麼第一個條件成立。
任何想法?
「在我閱讀時,如果兩個字符串比較的字符相等,理論上strncmp應該返回0。確實。你的問題是認爲'0'被認爲是真實的。 –
請閱讀:http://ericlippert.com/2011/04/25/something-wrong-with-the-universe/ –