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

時間 2021-10-14 21:56:17

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()}

如何利用strcmp函式比較兩個字串是否相同

按照函式定義的方式呼叫,傳進兩個字元陣列的指標即可。函式原型 extern int strcmp const char s1,const char s2 引數 s1 s2都是字元陣列的指標 規則當s1當s1 s2時,返回值 0 當s1 s2時,返回正數 即 兩個字串自左向右逐個字元相比 按ascii...

編寫函式,實現對兩個字串進行比較,函式原型可為 int strcmp char s1,char s

一個公認的實現方法如下 注意兩個形參應該是const char int my strcmp const char s1,const char s2 uc1 unsignedchar s1 uc2 unsignedchar s2 return uc1 uc2 1 uc1 uc2 int strcmp ...

比較兩個字串的大小(用陣列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 ...