编写字符串连接函数,例如s1=“abcd”,s2=“efg”,将s2连到s1的后面,连接之后s1=“abcdefg”。

tggo 2011-03-17 09:51:02
要求用指针,C++程序
...全文
1282 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
alfamoon 2011-03-20
  • 打赏
  • 举报
回复
void fun( char *s1,char *s2)
{
while(*s1!='\0'){
s1++;
}

while(*s1++=*s2++)
;
}
super_admi 2011-03-19
  • 打赏
  • 举报
回复
string s1="abcd";
string s2="efg";
s1+=s2;
//嘿嘿
na5120 2011-03-19
  • 打赏
  • 举报
回复
两个字符串s和t,连接成单个字符串r:

#include <stdio.h>
int main()
{
char *r,*malloc();
r = malloc(strlen(s)+strlen(t)+1);
if(!r) {
complain();
exit(1);
}

strcpy(r,s);
strcat(r,t);


/*一段时间后再使用*/
free(r);

return 0;
}


c++的只要改下就可以了。
AnYidan 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
直接用strcat,但要保证目标指针的容量可以容纳两个内容之和
[/Quote]

++
dfatfat 2011-03-19
  • 打赏
  • 举报
回复
其实1楼写的就很好了!!
tggo 2011-03-19
  • 打赏
  • 举报
回复 1
[Quote=引用 12 楼 formality 的回复:]
为什么非要用指针呢?难道是面试题?

如果是面试题的话,我觉得这些答案都得不到满分。

这个题目的出题人是想考察2个方面,1是strcat()函数的原型,2估计会想看到你的容错性。

如果前提是:char *s1=“abcd”,char *s2=“efg”呢?

就像2楼说的要保证目标指针的容量可以容纳两个内容之和。

注:C/C++的库函数,大多都是要求调用者保证参数的正确性……
[/Quote]不是面试题,是我们的作业,要求是用指针,如果,用你的“char *s1="abcd",char *s2="efg"”的话,那该怎么写这个程序呢?
tggo 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dfatfat 的回复:]
#include <iostream>
using namespace std;
int main()
{
char s1[10]="abcd";
char s2[10]="efg";
strcat(s1,s2);
cout<<s1;
getchar();
return 0;
}
[/Quote]可以把getchar()和return 0删除么?
友林 2011-03-19
  • 打赏
  • 举报
回复
为什么非要用指针呢?难道是面试题?

如果是面试题的话,我觉得这些答案都得不到满分。

这个题目的出题人是想考察2个方面,1是strcat()函数的原型,2估计会想看到你的容错性。

如果前提是:char *s1=“abcd”,char *s2=“efg”呢?

就像2楼说的要保证目标指针的容量可以容纳两个内容之和。

注:C/C++的库函数,大多都是要求调用者保证参数的正确性。
pathuang68 2011-03-19
  • 打赏
  • 举报
回复
2L的做法当然很好,不过楼主要求要用指针。所以还是参考4L的吧
dfatfat 2011-03-19
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
int main()
{
char s1[10]="abcd";
char s2[10]="efg";
strcat(s1,s2);
cout<<s1;
getchar();
return 0;
}
witwolf 2011-03-19
  • 打赏
  • 举报
回复
char s1[100]="abc";
char s2[100]="bcd";
strcat(s1,s2);

...
s1="abcdcd";
tggo 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
直接用strcat,但要保证目标指针的容量可以容纳两个内容之和
[/Quote]怎么用,能给出具体的代码么?
wang2666 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiali1984 的回复:]

我喜欢2楼的code,简单易懂
[/Quote]
me too
witwolf 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 witwolf 的回复:]

C/C++ code

void fun(char *s1,char *s2){
while(*s1++!='\0');
while((*s1++=*s2++)!='\0');
}
int main(){
char s1[10]="abcd";
char s2[10]="efg";
fun(s1,s2);
printf("%s\n",s1);
}
错了,,,少了一句
在两个while中间加一句s1--;
[/Quote]
xiali1984 2011-03-17
  • 打赏
  • 举报
回复
我喜欢2楼的code,简单易懂
delphiwcdj 2011-03-17
  • 打赏
  • 举报
回复

// C++ 指针
#include <iostream>
using namespace std;
int main()
{
char s1[128]="abcd",s2[]="efg";
char *p1=s1, *p2=s2;
while (*p1++);
--p1;
while (*p2)
*p1++ = *p2++;
cout<<s1<<endl;// abcdefg
return 0;
}
delphiwcdj 2011-03-17
  • 打赏
  • 举报
回复

#include <cstdio>
int main()
{
char s1[128]="abcd",s2[]="efg";
char *p1=s1, *p2=s2;
while (*p1++);
--p1;
while (*p2)
*p1++ = *p2++;
printf("%s\n",s1);// abcdefg
return 0;
}
bdmh 2011-03-17
  • 打赏
  • 举报
回复
直接用strcat,但要保证目标指针的容量可以容纳两个内容之和
witwolf 2011-03-17
  • 打赏
  • 举报
回复

void fun(char *s1,char *s2){
while(*s1++!='\0');
while((*s1++=*s2++)!='\0');
}
int main(){
char s1[10]="abcd";
char s2[10]="efg";
fun(s1,s2);
printf("%s\n",s1);
}

69,336

社区成员

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

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