#include <stdio.h>
#include <string.h>
int myScmp(char*, char*);
int main( ) {
printf( "strcmp(\"ABCDEF\", \"abc\")== %d 左邊小\n",
strcmp("ABCDEF", "abc") );
///
printf( "strcmp(\"abcde\", \"BCDEFGGG\")== %d\n",
strcmp("abcde", "BCDEFGGG") );
///
printf( "strcmp(\"abc\", \"abc\")== %d\n",
strcmp("abc", "abc") );
printf( "strcmp(\"abc\", \"abcde\")== %d\n",
strcmp("abc", "abcde") );
printf( "strcmp(\"abcde\", \"abc\")== %d\n",
strcmp("abcde", "abc") );
////////
printf("====== now try myScmp:\n");
printf( "myScmp(\"ABCDEF\", \"abc\")== %d\n",
myScmp("ABCDEF", "abc") );
///
printf( "myScmp(\"abcde\", \"BCDEFGGG\")== %d\n",
myScmp("abcde", "BCDEFGGG") );
///
printf( "myScmp(\"abc\", \"abc\")== %d\n",
myScmp("abc", "abc") );
printf( "myScmp(\"abc\", \"abcde\")== %d\n",
myScmp("abc", "abcde") );
printf( "myScmp(\"abcde\", \"abc\")== %d\n",
myScmp("abcde", "abc") );
printf("Hit ENTER key...");
getchar( ); return 0;
}
int myScmp(char*x, char*y) { // 完全與 strcmp( )做的相同!
int i=0;
while(x[i] != 0) { // 左邊還沒結束; 想一想若右邊先結束呢?
if(x[i] == y[i]) { i++; continue; } // 相等, next char
if(x[i] > y[i]) return 1; // 不相等(右邊先結束也在這)
else return -1; // 左小右邊大 !
} // 若一直都相等且右邊先結束則沒問題, 會 return 1
if(y[i] == 0) return 0; // 一直都相等, 且同時結束 !
return -1; // x < y 因一直都相等, 且x結束但 y 還沒有結束!!!
}// myScmp(
/******
D:\test> path C:\Dev-Cpp\bin;%path%
D:\test> gcc strcmp.c
D:\test> a.exe
strcmp("ABCDEF", "abc")== -1 左邊小
strcmp("abcde", "BCDEFGGG")== 1
strcmp("abc", "abc")== 0
strcmp("abc", "abcde")== -1
strcmp("abcde", "abc")== 1
====== now try myScmp:
myScmp("ABCDEF", "abc")== -1
myScmp("abcde", "BCDEFGGG")== 1
myScmp("abc", "abc")== 0
myScmp("abc", "abcde")== -1
myScmp("abcde", "abc")== 1
Hit ENTER key...
***************************/