问个指针的问题
程序代码:
求字符串逆序 Description 将输入的一个字符串s逆序输出。 编写一个函数str_rev()求一个串的逆序串。 str_rev()的调用格式见append.c,原型如下: char * str_rev(char *, char *) 参数是字符串s和它的逆序串str,str_rev(str, s)函数调用后,str中存储的串为s串的逆序。 Input 输入为一个串s。输入最少为一个字符,最多不会超过100个字符。 Output 串s的逆序。 输出两遍,一遍是测试返回值,一遍是测试str。 Sample Input ABCDE Sample Output EDCBA EDCBA HINT 返回值参考标准库函数strcpy()、strstr()、strchr()的设计思路:返回目标串的首地址。 Append Code append.c,
程序代码:
#include <stdio.h> #include <string.h> #define MAX_STR_LEN 101 char * str_rev(char *str, char *s) { int len,i,len1; len=len1=0; while(*(s+len)!='\0') { len++; } len--; len1=len; str=s; for(len=0;len<len1;len++) { printf("s:%c\n",*(s+len)); printf("str:%c\n",*(str+len)); } for(i=0;len>=0;len--) { *(str+i)=*(s+len); i++; } for(len=0;len<len1;len++) { printf("s:%c\n",*(s+len)); printf("str:%c\n",*(str+len)); } return str; } int main() { char s[MAX_STR_LEN], str[MAX_STR_LEN]; gets(s); puts(str_rev(str, s)); puts(str); return 0; }
其中这一段:
程序代码:
for(i=0;len>=0;len--) { *(str+i)=*(s+len); i++; }
这里,我本来想着是s不变,然后利用s把str变成s的逆序。
结果调试发现好像是str跟s的对应位置的字符交换位置了。
想不明白