|
|
例题十二:写一个程序,以递归方式反序输出一个字符串。如给定字符串 "abc" 输出 "cba".
测试程序:
| | #include <string.h> | | | | void reverse(char *p) | | { | | if(*p == '\\0' ) | | return; | | | | reverse(p + 1); | | | | printf("%c", *p); | | } | | | | int main() | | { | | char str[100]; | | int len; | | char *p; | | printf("请输入字符串:"); | | fgets(str, 100, stdin); | | len = strlen(str); | | | if(str[len - 1] == '\
') | | str[len-1] = '\\0'; | | | | p = str; | | reverse(p); | printf("\
"); | | | | return 0; | | } |
| 说明: | | 程序中,之所以用 fgets() 而不用 gets() 是因为前者是个安全的函数,而后者因为不检查边界,所以很危险,不使用。 | if(str[len - 1] == '\\n')
str[len-1] = '\\0';
上面两行语句是因为用 fgets() 会读取进一个回车符 '\\n',这里将其吃掉。
|
|