//len.c : find length of a string (strlen); 9 different versions! // 與 strlen(char*) 功能相同 ! int len(char x[ ]) { int i=0; while(x[i]) ++i; return i; } int len2(char x[ ]) { int i=0; while(x[i++]); // 先取其值, 再做 ++ return --i; // 注意要減 1 喔 } int len3(char x[ ]) { int i= -1; while(x[++i]); // 先做 ++, 再取其值 return i; // 注意這是正確的! } int len4(char x[ ]) { int i = 0; for( ;; ) { if(x[i] == 0) break; ++i; } return i; // 注意這也是正確的! } int len5(char x[ ]) { int i; for(i=0; ; i++) { if(x[i] == 0) break; } return i; // 注意這也是正確的! } int len6(char x[ ]) { int i; for(i=0;x[i] != 0; i++); return i; // 注意這也是正確的! } int len7(char x[ ]) { char*p = x; while(*p) ++p; return p - x; // 注意這寫法是正確的! } int len8(char *x) { char*p = x; while(*p) ++p; return p - x; // 注意這寫法是正確的! } int len9(char *x) { char*p = x; while(p[0]) ++p; return p - x; // 注意這寫法是正確的! } #include int main( ) { printf("Length of \"abc\" is %d; ", len("abc")); printf("Length of \"\" is %d\n", len("")); printf("Length of \"abc\" is %d; ", len2("abc")); printf("Length of \"\" is %d\n", len2("")); printf("Length of \"abc\" is %d; ", len9("abc")); printf("Length of \"\" is %d\n", len9("")); } /********* D:\testc> path C:\Dev-Cpp\bin;%path% D:\testc> gcc len.c D:\testc> a Length of "abc" is 3; Length of "" is 0 Length of "abc" is 3; Length of "" is 0 Length of "abc" is 3; Length of "" is 0 =======================================***/