C++ strcat函数问题

voidstrcat(char*p1,char*p2){char*temp=p1;intsize=sizeof(p1)/sizeof(char);//问题出在这儿,我想求... void strcat(char* p1,char* p2)
{
char* temp=p1;
int size=sizeof(p1)/sizeof(char); //问题出在这儿,我想求p1所指字符串大小
//但这样求,根本求不出,请问该怎么求解?
cout<<size;
while(*p1) p1++;
for(char* begin=p1;begin!=temp+size-1 && *p2;begin++)
{
*begin=*p2; p2++;
}
for(char* i=begin;i!=temp+size;i++) *i='\0';
}

当然如果各位有另外完整的strcat函数就更好了,把源代码贴上就是!谢谢各位了。
展开
 我来答
L_o_o_n_i_e
2011-03-01 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5047万
展开全部
strcat 系统里有现成的,不需要另写。
字符串长度 用 strlen() 计算。或者 自己 判断 i=0; while (1) { if (p1[i] =='\0')break; i++;} .
由于参数是指针,在你的函数内,是没有办法测定 p1 数组 大小的。
除非 你把数组大小也用参数传进函数。
strcat函数 很简单,
void my_strcat(char* p1,char* p2)
{
int i,j;
i=0; while (1) { if (p1[i] =='\0')break; i++;} ;
j=0; while (1) { if (p2[j] =='\0') break; p1[i+j]=p2[j];j++;} ;
}

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
char str1[80]="abc";
char str2[]="12345";
int i=0;
while (1) { if (str1[i] =='\0')break; i++;}
printf("%d\n",i);
strcat(str1,str2); // 系统里已有
// my_strcat(str1,str2); // 用自己写的也可以
cout << str1;
return 0;
}
追问
strcat函数是好写,可是我考虑的问题是:把字符串ch2连接到ch1后面,当ch2并不能
将ch1的字符完全连接在ch2后面时,就需要考虑字符串数组ch2最大存储字符个数了
你上面代码就没有考虑这种情况。

哎,刚才用编译器试了试,系统的strcat也没有考虑这种情况的,那是strncat了,还是得
显示传递最大连接元素数目。
百度网友a717919
2011-02-28 · TA获得超过234个赞
知道小有建树答主
回答量:180
采纳率:0%
帮助的人:86.9万
展开全部
strlen函数来求
更多追问追答
追问
我求的是系统为数组最多存储元素个数,而不是当前存储的字符个数。
如: char ch[34]="ab"; 用strlen(ch)求的结果是2,我要求的是数组大小34
不传递数组首地址时用 sizeof(ch)/sizeof(char)可以求出,但传递参数给指针后
不能求出了。
追答
传一个数组时,要同时传地址和大小的啊。你可以baidu "用数组作形参"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式