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函数就更好了,把源代码贴上就是!谢谢各位了。 展开
{
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函数就更好了,把源代码贴上就是!谢谢各位了。 展开
2个回答
展开全部
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;
}
字符串长度 用 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了,还是得
显示传递最大连接元素数目。
展开全部
strlen函数来求
更多追问追答
追问
我求的是系统为数组最多存储元素个数,而不是当前存储的字符个数。
如: char ch[34]="ab"; 用strlen(ch)求的结果是2,我要求的是数组大小34
不传递数组首地址时用 sizeof(ch)/sizeof(char)可以求出,但传递参数给指针后
不能求出了。
追答
传一个数组时,要同时传地址和大小的啊。你可以baidu "用数组作形参"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询