字符串中个单词的翻转

fightlcy 2012-09-13 10:50:16
#include<iostream>
#include<stdio.h>
#include<stdlib.h>

using namespace std;

void swap(char *p,char *q)
{
char t;
t=*p;
*p=*q;
*q=t;
}

void reverstr(char *src)
{
char *start=src;
char *end=src;
char *ptr=src;
while(*ptr!='\0')
{
if(*ptr==' '||*ptr=='\0')
{
end=ptr-1;
while(start<end)
{
swap1(*start++,*end--);
start=end=ptr+1;
}

}


}
start=src;
end=ptr-2;
while(start<end)
{
swap1(*start++,*end--);
}
while(*src!='\0')
{
printf("%c",*src);
}
}

int main()
{

char *p=" i am lucy";

printf("the original string is :%s\n",p);

reverstr(p);

printf("the new string is :%s\n",p);


return 0;
}

輸出結果是:the original string is :i am lucy



爲什麽調用函數之後沒有反應啊?哪裡錯了,求解答
...全文
160 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
晚安_好梦 2012-09-13
  • 打赏
  • 举报
回复
你的交换函数原型为:void swap(char *p,char *q)

参数是指针呀,指针。

你调用的地方:
swap1(*start++,*end--);

你确定传的是指针吗?感觉是指针指向空间的内容那个。


hongwenjun 2012-09-13
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>

int main()
{

char p[] = " i am lucy"; // 需要分配空间
strrev(p);

// char* s = " i am lucy"; // 指向常量串
// strrev(s); // 运行错误

printf("the new string is :%s\n", p);

return 0;
}
图灵狗 2012-09-13
  • 打赏
  • 举报
回复
你的程序问题很多,应改为如下的:

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

void reverstr(char *src)
{
int len = strlen(src);
char* start = src;
char* end = src + len - 1;
int i;
char ch;

for(i = 0; i < len / 2; i++)
{
ch = *start;
*start = *end;
*end = ch;
start++;
end--;
}
}

int main(int argc, char* argv[])
{
char p[] = " i am lucy";
printf("the original string is :%s\n", p);
reverstr(p);
printf("the new string is :%s\n", p);

return 0;
}

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧