永发信息网

C语言中的问题

答案:2  悬赏:80  手机版
解决时间 2021-04-16 02:23
  • 提问者网友:了了无期
  • 2021-04-15 17:28
#include <stdio.h>
#include <string.h>
void swap(char *a,char *b)
{
char c;
c=*a;
*a=*b;
*b=c;
}
void reverse(char *s,char *t){
if(s<t){
swap(*s,*t);
reverse(++s,--t);
}
}
void main(){
char s[100],*p;
int len;
printf("Please enter a string:\n");
gets(s);
len=strlen(s);
p=&s[len];
reverse(s,p);
printf("Reverse the string we will get:\n%s\n",s);
}
这里哪出错了啊·?
最佳答案
  • 五星知识达人网友:一秋
  • 2021-04-15 17:46

#include <stdio.h>
#include <string.h>


void swap(char *a,char *b)
{
char c;
c=*a;
*a=*b;
*b=c;
}


void reverse(char *s,char *t)
{
if(s<t){
swap(s,t);


//s 和t 本来就是地址. 而且swap参数也是地址. 所以不用解引用也不用取地址.直接过去就行了.
reverse(++s,--t);
}
}
void main()
{
char s[100],*p;
int len;
printf("Please enter a string:\n");
gets(s);
len=strlen(s);
p=&s[len-1]; //s[len]的内容是字符串结束符. 所以要指向len-1的那个元素地址.
reverse(s,p);

printf("Reverse the string we will get: %s\n",s);
}

全部回答
  • 1楼网友:人類模型
  • 2021-04-15 17:53
swap这个函数的形参是指针 *s不是指针而是s 那个存储单元的值
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯