为什么str_cat(str1,str2,str3)会系统有错?
#include<iostream>
#include<assert.h>
using namespace std;
//字符串长度
int str_len(const char *str)
{
assert(str!=NULL);
int len=0;
for(;*str!='\0';str++)
len++;
return len;
}
//比较两个字符串
bool str_cmp(const char *str1,const char *str2)
{
assert(str1!=NULL&&str2!=NULL);
bool flag=1;//=1表示相同,=0表示不相同
for(;*str1!='\0'||*str2!='\0';str1++,str2++)
{
if(*str1!=*str2)
flag=0;
}
return flag;
}
//拷贝字符串
char *str_copy(const char *str1,char *str3)
{
assert(str1!=NULL&&str3!=NULL);
char *p=str3;
for(;*str1!='\0';str1++,str3++)
*str3=*str1;
*str3='\0';
return p;
}
//连接字符串
char *str_cat(const char *str1,const char *str2,char *str3)
{
assert(str1!=NULL&&str3!=NULL&&str3!=NULL);
char *p=str3;
for(;*str2!='\0';str2++,str3++)
*str3=*str2;
for(;*str1!='\0';str1++,str3++)
*str3=*str1;
*str3='\0';
return p;
}
int main()
{
char *str1="hello world,my god!";
char *str2="hello world!";
char str3[20];
char *p=str3;
bool flag=str_cmp(str1,str2);
cout<<"字符串长度为:"<<str_len(str1)<<endl;
if(flag)
cout<<"两个字符串相同!"<<endl;
else
cout<<"两个字符串不相同!"<<endl;
cout<<"拷贝后的字符串为:"<<str_copy(str1,str3)<<endl;
cout<<"连接后的字符串为:"<<str_cat(str1,str2,str3)<<endl;
为什么str_cat(str1,str2,str3)会系统有错,但新定义一个空的str4[],然后str_cat(str1,str2,str4)就没错了。
正在回答 回答被采纳积分+1
- 参与学习 529 人
- 提交作业 110 份
- 解答问题 594 个
无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星