问个指针的问题
程序代码:求字符串逆序 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的对应位置的字符交换位置了。
想不明白







下午要考试啊。。。。


