#include <stdio.h>#include <string.h>main(){ char a[]={'a','b','c'}; char b[]={'a','b','c'}; int c=strcmp(a,b); printf("%d\n",c); getch();}兩個字符串數組完全一樣,按照strcmp函數應該輸出0但是輸出-1,用wintc編譯輸出-47,得不到正確結果。發現string.h中的函數不太靠譜啊,以前用過其中的isapha、isdigit等函數統計各種字符,發現函數的返回值根本不像描述的那樣。
3 回答

largeQ
TA貢獻2039條經驗 獲得超8個贊
strcmp的實現是這樣的,對兩個字符串,先比較第一個字符,如果不相等,返回差值。如果相等,繼續比較下一個字符,直到有不相等或遇到‘\0’時結束。
現在你把數組a和b傳入,因為前三個字符都相等,會越界繼續比較的。
如果你想比較兩個字符串,字符串是要用‘\0’結束的。
如果你只想比較前n個,可以使用strncmp,strncmp(a,b,3);

眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
你這是在比較字符數組了吧 不是在比較字符串了
char a[] = "abc";
char b[] = "abc";應該這么定義
你之前定義的是
char a[]={'a','b','c'}; //char a[3] 是可以的 a[2] = 'c'
char b[]={'a','b','c'};// char a[4]也是可以的 a[3] = '\0'
不一樣的
- 3 回答
- 0 關注
- 734 瀏覽
添加回答
舉報
0/150
提交
取消