问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++中 写一个两个字符串相连接的函数:char *strcat(char *s1,const c...

发布网友 发布时间:2024-09-06 11:40

我来回答

4个回答

热心网友 时间:2024-09-28 01:38

这个问题细考虑一下还是蛮复杂的,如果在主程序中给定s1是一个指针的话,即char*s1="good";,那么s1的大小是给定的,如果想通过strcat将两个字符串连接的结果放到s1中的话,必须用链表来做,除非你主函数中给定的s1是一个字符数组,而且数组大小要足够大,能够容的下s1和s2,那么就很容易将s1改变了。如果你不是非要把s1和s2合并到s1中去的话,我们可以引入第三个字符指针s3,示例程序如下:
#include <iostream>
using namespace std;

int strcat(char *s1,char*s2)
{
int i,i1,i2;
i1=strlen(s1);
i2=strlen(s2);

char *s3=new char[i1+i2+1];
while(*s1!='\0')
*(s3++)=*(s1++);

while(*s2!='\0')
*(s3++)=*(s2++);

*(s3++)='\0';
for(i=0;i<i1+i2+1;i++)
s3--;

cout<<"合并后的数组为:"<<s3<<endl;
cout<<"合并后数组大小为:"<<strlen(s3)<<endl;
return strlen(s3);
}

int main()
{
int i;
char *s1="good";
char *s2="day";
i=strcat(s1,s2);
return 0;
}
另外,站长团上有产品团购,便宜有保证

热心网友 时间:2024-09-28 01:36

char *strcat(char *s1,const char *s2)
{
char *p1=s1,*p2=(char *)s2;
while (*p1) ++p1;
while (*p2) *p1++=*p2++;
*p1=0;
return s1;
}

热心网友 时间:2024-09-28 01:37

#include "stdio.h"
char * strcat(char *s1,char *s2)
{
int i=0,j=0;
char *p=s1,*q=s2;
while(*p++)i++;
while(*q++)s1[i++]=s2[j++];
return s1;
}
void main()
{
char a[20]="abc";
char b[10]="defg";
printf("%s\n",strcat(a,b));
}

热心网友 时间:2024-09-28 01:40

#include <iostream.h>
char *strcat(char *s1, const char *s2)
{
char *p;
p = s1;
while(*p)
p++;
while(*p++ = *s2++);
return s1;
}
int main()
{
char s1[10] = "abc";
char s2[4] = "123";
char *p = strcat(s1, s2);
cout << p << endl;
return 0;
}

热心网友 时间:2024-09-28 01:32

这个问题细考虑一下还是蛮复杂的,如果在主程序中给定s1是一个指针的话,即char*s1="good";,那么s1的大小是给定的,如果想通过strcat将两个字符串连接的结果放到s1中的话,必须用链表来做,除非你主函数中给定的s1是一个字符数组,而且数组大小要足够大,能够容的下s1和s2,那么就很容易将s1改变了。如果你不是非要把s1和s2合并到s1中去的话,我们可以引入第三个字符指针s3,示例程序如下:
#include <iostream>
using namespace std;

int strcat(char *s1,char*s2)
{
int i,i1,i2;
i1=strlen(s1);
i2=strlen(s2);

char *s3=new char[i1+i2+1];
while(*s1!='\0')
*(s3++)=*(s1++);

while(*s2!='\0')
*(s3++)=*(s2++);

*(s3++)='\0';
for(i=0;i<i1+i2+1;i++)
s3--;

cout<<"合并后的数组为:"<<s3<<endl;
cout<<"合并后数组大小为:"<<strlen(s3)<<endl;
return strlen(s3);
}

int main()
{
int i;
char *s1="good";
char *s2="day";
i=strcat(s1,s2);
return 0;
}
另外,站长团上有产品团购,便宜有保证

热心网友 时间:2024-09-28 01:37

#include "stdio.h"
char * strcat(char *s1,char *s2)
{
int i=0,j=0;
char *p=s1,*q=s2;
while(*p++)i++;
while(*q++)s1[i++]=s2[j++];
return s1;
}
void main()
{
char a[20]="abc";
char b[10]="defg";
printf("%s\n",strcat(a,b));
}

热心网友 时间:2024-09-28 01:33

char *strcat(char *s1,const char *s2)
{
char *p1=s1,*p2=(char *)s2;
while (*p1) ++p1;
while (*p2) *p1++=*p2++;
*p1=0;
return s1;
}

热心网友 时间:2024-09-28 01:32

#include <iostream.h>
char *strcat(char *s1, const char *s2)
{
char *p;
p = s1;
while(*p)
p++;
while(*p++ = *s2++);
return s1;
}
int main()
{
char s1[10] = "abc";
char s2[4] = "123";
char *p = strcat(s1, s2);
cout << p << endl;
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有关通知参加讲座的英语作文范例 关于LC振荡电路中的振荡电流,下列说法中正确的是( ) 三星S6充电口进水怎么办? 充电口进水了没注意,插上充电了,过会一看没 X、Y、Z、W是同一周期的短周期元素,原子序数依次增大。 991的补码 名蔻青春定格肽品牌理念 茗蔻亮青春定格肽的品牌理念 茗蔻亮青春定格肽品牌理念 茗蔻亮青春定格肽品牌介绍 2024年买mate30pro值得吗 食用莲子有什么功效 常吃莲子的功效与作用有哪些 莲子煮水喝有什么功效 掩饰、隐瞒犯罪所得罪现在已取保候审后怎么办? 盗窃公司物品价值四万九应判多久 格兰仕空调静电除尘什么意思 有村委会的离婚调解协议书,还用去名政局领离婚证吗? 交通事故怀疑对方骗保从哪些方面看 工业机器人日常保养 保养手部的方法是什么 化工原料之母是煤还是石油 化工原料之母是什么意思? 什么是化工原料之母化工原料之母的解释 迷你世界怎么打开语音-语音开启方法 迷你世界开麦克风在哪-麦克风开启教程 排骨的制作方法 红烧排骨的做法 红烧排骨正确的做法如何制作红烧排骨的做法步骤 华为手机用什么u盘 voip什么意 新买的矿泉水水喝没了 用瓶子装家里的凉白开 一直没有动过 请问保质期... 昵称带柳字唯美带柳字唯美好听的网名集锦 如果公司法人代表不是股东可以吗 猪朋狗友的意思猪朋狗友的近反义词 猪朋狗友酒桌上是什么意思? 求哈利波特。电子书。要英汉互译的。全集txt 探探和陌陌有什么不同 那安徽工业大学怎么样啊? 安徽财经大学商学院所在的西校区怎么样 ?是郊区还是城市中心? 藏枪支判几年 根据法律私自藏枪需要判几年 华为手机如何解除浏览器的网站限制 水逆期适合发朋友圈的句子 适合我太难了发朋友圈说说 法桐大树怎样修剪造型?法桐种植技术介绍 6cm以上的紫椴移植需要截杆吗? 血糖高的早期症状饮食注意什么 高血糖症状注意事项 法院起诉费用标准是多少 起诉费用大概需要多少?