求一个字符串交换的函数,谢谢

zhanghengbo 2004-11-21 10:22:06
通过一个函数使两个字符串互换,谢谢
...全文
357 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kunpengzhi 2004-11-22
  • 打赏
  • 举报
回复
/*-----------------------------------*/
/* Just For Study */
/*-----------------------------------*/

#include <stdio.h>
#include <stdlib.h>

#define MAX_LINE 255

int exchange (char *, char *);

int main (void)
{
char str1[MAX_LINE] = "Hello";
char str2[MAX_LINE] = "World";


printf("%s %s\n", str1, str2);

exchange(str1, str2);

printf("%s %s\n", str1, str2);
}

int exchange (char *str1, char *str2)
{
char *p;
char *q;
char temp[MAX_LINE];

p = str1;
q = temp;
while(*q++ = *p++);

p = str2;
q = str1;
while(*q++ = *p++);

p = temp;
q = str2;
while(*q++ = *p++);
}

fcf128 2004-11-21
  • 打赏
  • 举报
回复
void func(char *str1, char *str2) // 可以改变指针吗?

// Swap(char *str1, char *str2) ;
边城狂人 2004-11-21
  • 打赏
  • 举报
回复
不好,还要考虑两个字符串不等长的情况,需要重新分配空间的。
如果用 STL 就简单了

void swap(string& s1, string& s2) {
string temp = s1;
s1 = s2;
s2 = temp;
}
rr12 2004-11-21
  • 打赏
  • 举报
回复
void func(char *str1, char *str2)
{
char tmp[512];

strcpy(tmp,str1);
strcpy(str1,str2);
strcpy(str2,tmp);
}

char string1[512];
char string2[512];

strcpy(string1,"hello");
strcpy(string2,"world");

printf("%s\n",string1);
printf("%s\n",string2);

func(string1,string2);

printf("%s\n",string1);
printf("%s\n",string2);
BlackEagle_ 2004-11-21
  • 打赏
  • 举报
回复
void SwapString(char **s1, char **s2) {
char *temp;
temp = *s1;
*s1 = *s2;
*s2 = temp;
}

void main() {
char *str1 = "abc";
char *str2 = "uvwxyz";
SwapString(&str1, &str2);
printf("%s\n", str1);
printf("%s\n", str2);
}

========================
输出:
uvwxyz
abc
sharkhuang 2004-11-21
  • 打赏
  • 举报
回复
用string是工作交给了库
y8t47h 2004-11-21
  • 打赏
  • 举报
回复
建议使用类型string 替代C—string。

C—string的确是个坏孩子。
jp1984 2004-11-21
  • 打赏
  • 举报
回复
[james@Mathematcs james]$ cc -o test haha.c
[james@Mathematcs james]$ ./test
love lqp
[james@Mathematcs james]$ cat haha.c
#include <stdio.h>

char* exchange(char* s,char* t)
{
int i = 0,j = 0;
while(j <= strlen(s))
{
t[j] = s[i];
j++;
i++;
}
return t;
}
int main()
{
char* love = "love lqp";
char* jp = (char*) malloc(1);
jp = exchange(love,jp);
printf("%s\n",jp);
return 0;
}

69,369

社区成员

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

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