c++里函数的简单问题,我发现这窟窿值得我再捅一捅

作者:用户 来源:互联网 浏览:498 次 时间:2016-09-01 09:32:00

c++

c++里函数的简单问题,我发现这窟窿值得我再捅一捅 - 摘要: c++里函数的简单问题,我发现这窟窿值得我再捅一捅编写一个字符串连接函数str_cat(chars[],chars1[],chars2[]),完成s=s1+s2的字符串连接工作。具体要求为,先将字符串

问题描述

c++里函数的简单问题,我发现这窟窿值得我再捅一捅

编写一个字符串连接函数str_cat(char s[],char s1[],char s2[]),完成s=s1+s2的字符串连接工作。具体要求为,先将字符串s1复制到s中,然后再将字符串s2连接到s后面。在主函数中定义三个字符串数组str[80]、str1[40]、str2[40],将两个字符串输入到str1与str2中,调用字符串连接函数str_cat(),将str1与str2连接到str中,最后输出连接后的字符串str。要求用两种方法编写str_cat()函数。方法一,用字符串复制与连接函数。方法二,用while语句编程实现。
输入实验数据:str1=”I am student” str2=”And You are student too”

解决方案

    char s1[20],s2[40];
cout<<"Input String1:n";
cin.getline(s1,20);
cout<<"Input String2:n";
cin.getline(s2,20);
解决方案二:

对于stract无法输入空格的问题我不知道怎样解决

解决方案三:

空格要手动输入。复制str1到str之后,在str中字符串最后,即""那个地方替换成空格,然后在下一个地方再次输入""就可以了。具体实现:strcpy(str,str1);n=strlen(str);str[n]=' 空格 ';str[n+1]='';strcat(str,str2);这样能保证链接后,两个字符串之间有空格。

解决方案四:

什么意思?空格也可以作为字符粘贴,没问题。你是想删除第一个字符串末尾空格和下一个字符串开头的空格?这也有函数可用啊。

解决方案五:

在第一个字符串后面粘一个空格,再粘第二个字符串。

解决方案六:

空格要手动输入。复制str1到str之后,在str中字符串最后,即""那个地方替换成空格,然后在下一个地方再次输入""就可以了。具体实现:strcpy(str,str1);n=strlen(str);str[n]=' 空格 ';str[n+1]='';strcat(str,str2);这样能保证链接后,两个字符串之间有空格。

解决方案七:

我说的不是两个字符串之间的空格……
试一下“I am a student.”
输入时这字符串只能输到I,系统好像默认到空格就截止输入了,所以我输的第二个字符串根本就不用管了,因为输出连接后的是I am

解决方案八:

你是用scanf("%s")读入字符串吧?在scanf读入时,将空格、TAB键、回车都作为输入结束符。
想读入带空格的一行字符串,可以用gets

 #include<stdio.h>
void main()
{
    char str[80];
    gets(str);
    printf("%s",str);

}
解决方案九:

指针变量编写下列字符串处理函数:
字符串拼接函数,void str_cat( char *p1,char *p2){函数体}
字符串比较函数,int str_cmp( char *p1,*char *p2) {函数体}
取字符串长度函数,int str_len( char *p){函数体}
在主函数中输入两个字符串,对这两个字符串进行比较,并输出比较结果。然后将两个字符串进行拼接,输出拼接后的字符串及其长度。
实验数据:"Visual C++" ,"Visual Basic"

其实我今天做到这题也遇上同样困扰了:

include

int str_cmp(char *p1,char *p2)
{ while(*p1==*p2)
{p1++;
p2++;
}
if (*p1>*p2)
return 1;
else if (*p1==*p2)
return 0;
else
return -1;
}
void str_cat(char *p1,char *p2)

//将p2所指的字符串连接到p1所指的字符串串末尾
{ while(*p1++);
p1--;
while(*p2!=0)
*p1++=*p2++;
*p1=0;
}
int str_len(char *p)
{ int length=0;
while(*p!=0)
{ p++;
length++;
}
return length;
}
void main(void)
{ char s1[20],s2[40];
cout<<"Input String1:n";
cin>>s1;
cout<<"Input String2:n";
cin>>s2;
if (str_cmp(s1,s2)==1)
cout<<"String1>String2"< else if (str_cmp(s1,s2)== -1)
cout else
cout str_cat(s1,s2);
cout cout }
程序运行结果:
Input String1:
Visual C++
Input String2:
Visual Basic
String1>String2
String1+String2 =Visual C++ Visual Basic
String1 Length=23

看似结果应当如此吧,可是真正执行后却是把visual和 c++看成了两个串,我编出来的结果是9。。。

【云栖快讯】你想见的Java技术专家都在这了,向大佬提问,有问题必答  详情请点击
云栖社区(yq.aliyun.com)为您免费提供c++里函数的简单问题,我发现这窟窿值得我再捅一捅相关信息,包括 c++ 的信息 ,所有c++里函数的简单问题,我发现这窟窿值得我再捅一捅相关内容均不代表云栖社区的意见! 该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_25749,您可以点击c++里函数的简单问题,我发现这窟窿值得我再捅一捅-手机站访问。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备

热点导航