|
例题十二:写一个程序,以递归方式反序输出一个字符串。如给定字符串 "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',这里将其吃掉。
|
|