//strcmp.c -- @CopyLeft by tsaiwn@csie.nctu.edu.tw
// 我們常需要比較兩字串是否相等, 注意不可直接用 == 喔! 
// 之前許多範例中我們用過 strcmp(char*, char*) 這程式庫函數. 
//   那 strcmp(char*t, char*s) 是如何寫的 ? 
// 其實這函數也沒什麼學問:-) 阿就是一字一字的比啊!
// 本範例中寫了一個與 strcmp( ) 做完全相同事情的 myScmp( )
/// 並且寫了簡單的 testing driver 主程式測試與程式庫比較 
/// 請仔細研究測試結果以及我寫的 int myScmp(char*, char*)
#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...
***************************/