1。實現庫函數strlen,不能使用任何庫函數,不能定義任何變量。
2。實現函數strrev,該函數有兩個參數,將其中一個字符串逆序放到另一個字符串指針中,同樣要求不能使用任何庫函數,不能定義任何變量。
採用遞歸實現,剛好可以滿足這兩道題的要求:
- void strrev(char **dest, const char *src)
- {
- if(*src == '/0')
- return;
- else
- {
- strrev(dest, src+1);
- *(*dest)++ = *src;
- }
- }
- int strlens(const char *src)
- {
- if(*src != '/0')
- return strlens(++src)+1;
- else
- return 0;
- }
當然這兩個函數這樣寫效率不一定高,但採用遞歸的方法確實挺有意思的。