用strcmp函式比較兩個字串,結果不正確啊

時間 2021-10-14 21:55:52

1樓:

strcmp的實現是這樣的,對兩個字串,先比較第一個字元,如果不相等,返回差值。如果相等,繼續比較下一個字元,直到有不相等或遇到『\0』時結束。

現在你把陣列a和b傳入,因為前三個字元都相等,會越界繼續比較的。

如果你想比較兩個字串,字串是要用『\0』結束的。

如果你只想比較前n個,可以使用strncmp,strncmp(a,b,3);

2樓:匿名使用者

你這是在比較字元陣列了吧 不是在比較字串了char a = "abc";

char b = "abc";應該這麼定義你之前定義的是

char a=; //char a[3] 是可以的 a[2] = 'c'

char b=;// char a[4]也是可以的 a[3] = '\0'

不一樣的

3樓:風8清9揚

因為你沒有加字串的結尾標誌'\0',所以才會出錯。

char a=;

char b=

4樓:寂寞而莫我知也

字串你後面還必須要加char a=;

char b=

c語言題:輸入兩個字串,不使用函式strcmp比較大小。急!十萬火急!!!!

5樓:匿名使用者

void main()

else if(s1[i]

}if (s1[i]!='\0')

if (s2[i]!='\0')

printf("s%d is biggest\n",flag);}

c語言問題:不用strcmp函式比較兩個字串的大小

6樓:問明

#include

#define n 80

void cmp(char a[n],char b[n])int i=0;

char *p1=a,*p2=b;

while(*(p1+i)==*(p2+i)&&*(p1+i)!='\0')

i++;

if(*(p1+i)>*(p2+i))

printf("%s>%s\n",p1,p2);

else if(*(p1+i)<*(p2+i))printf("%s<%s\n",p1,p2);

else

printf("%s=%s\n",p1,p2);

int main()

char a[n]=,b[n]=;

char c[n]=,d[n]=;

char e[n]=,f[n]=;

cmp(a,b);

cmp(c,d);

cmp(e,f);

return 0;

執行效果:

7樓:匿名使用者

#include

int main()}

比較兩個字串的大小(用陣列a,b,如果a大於b,輸出1如果a小於b,輸出 1如果a等於b,輸出0 )

字串比較用函式 strcmp。char a 80 b 80 printf please enter string a n gets a printf please enter string b n gets b if strcmp a,b 0 printf 0 else if strcmp a,b ...

用C語言編寫比較兩個字串大小的程式 不能用string函式

include int str cmp char str1,char str2 if str1 0 str2 0 return 1 if str1 0 str2 0 return 1 if str1 0 str2 0 return 0 int main else if a i 0 return 1 ...

求c 程式!怎樣採用字元指標,比較兩個字串

include include include include int main void include using namespace std void main else cout unequal 用strcmp不就直接解決了?還可以用string物件直接 比較。include using n...