编一程序,将两个字符串连接起来,不要用strcat函数

作者&投稿:拔尚 (若有异议请与网页底部的电邮联系)
C语言编程:5、编一个程序,将两个字符串连接起来,不要用strcat函数.~

思路:字符串连接先需要找到第一字符串的结束位置,接着把第二字符串元素放到第一字符串后面,最后加上结束标志即可。
参考代码:拼接123和456
#includevoid mystrcat(char a[],char b[]){//字符串连接函数 int i=0,j=0;while(a[i++]!='\0');//找到a的结束位置 i--;while(b[j]!='\0'){//把b元素赋值到a中 a[i++]=b[j++];} a[i]='\0';//加上结束标志 }int main(){char a[100],b[100];scanf("%s%s",a,b);mystrcat(a,b);puts(a); return 0;}/*运行结果:123 456123456*/

#include "stdio.h"void main(){ char a[50],b[50],c[50]; int i=0,j=0,k=0;printf("输入第一个字符串");gets(a);printf("输入第二个字符串");gets(b); printf("a=%s
",a); printf("a=%s
",b); while(a[i])c[k++]=a[i++]; while(b[j])c[k++]=b[j++]; c[k]=b[j]; printf("c=%s",c);}已经运行过,有什么问题请留言!

方法和详细的操作步骤如下:

1、第一步,打开pycharm编辑器,见下图,转到下面的步骤。

2、第二步,执行完上面的操作之后,在文件中写一个注释,见下图,转到下面的步骤。

3、第三步,执行完上面的操作之后,创建第一个字符串str1
 =“ my name”,见下图,转到下面的步骤。

4、第四步,执行完上面的操作之后,创建第二个字符串str2
 =“ is feng”,见下图,转到下面的步骤。

5、第五步,执行完上面的操作之后,将两个字符串拼接在一起以形成新的字符串str3
 = str1 + str2,见下图,转到下面的步骤。

6、第六步,执行完上面的操作之后,打印出连接的字符串,见下图,转到下面的步骤。

7、第七步,执行完上面的操作之后,运行该程序并获得结果,见下图。这样,就解决了这个问题了。



上边那位同志的操作有些危险,还有错误。
函数的引数void *mystrcat(char* s1, char* s2)
第一个引数输入在函数外部 char *a="asdfasdf" 声明 编译通过但是运行会出现错误 (*a 指向的内容被视为是常量,不可改变)
或者 char a[]="ab",也会出错,(长度超限,运行时错误)
除非char a[100]="ab",2个字符串长度不超过100才会通过。

最好状态知道2个字符串长度,建立一个新字符串把2个字符串复制进去 如果不知道长度的情况,就应该用连表
最简单的状态,2个知道长度的字符串。
int main()
{
char *a="qwet",*b="woei";//2个4长度的字符串
char c[20]; //一个长度大于2字符串长度的的字符数组
int i,j;
for( i=0,j=0;*(a+i);i++ ,j++)//第一个字符串复制,到遇到结束标志停止
c[j]=*(a+i);
for(i=0 ; *(b+i);i++,j++ )//第二个字符串复制,到遇到结束标志停止
c[j]=*(b+i);
c[j]='\0'; //给字符数组加入结束标志
for( i=0 ; c[i] ;i++ )
printf("%c ",c[i]);
}

将两个字符串连接起来,不用strcat函数,可用sprintf呀.
下面是把字符串a和字符串b,放到x里,就连好了.

#include <stdio.h>
#include <stdlib.h>
main()
{
char a[]="abcd fgh -- "; // 有字符"空白"号也不怕
char b[]="12345 7890";
char x[80];
sprintf(&x[0],"%s%s\0",a,b); // 把ab连起来
printf("%s",x); // 打出结果来看看
}

先看运行截图:

运行截图

上代码:

#include <stdio.h>

#include <string.h> 

main(){

int i=0,j=0;

char a[100],b[10];

gets(a); //用来接收字符串

gets(b);

printf("a = %sb = %s
",a,b);

while(a[i++] != '\0'); //找到a最后的一位

--i;

while((a[i++] = b[j++]) != '\0'); //将a和b连接起来 代码核心

i =0;

printf("a = ");

while(a[i] != '\0') printf("%c",a[i++]);  //输出a的值

return 0;

}



#include<stdio.h>
int main()
{
int i,j;
char str1[80]={"China"};
char str2[80]={" is a Country"};
for(i=0;str1[i]!='\0';i++)//计算长度
;
for(j=0;str2[j]!='\0';j++,i++)
{
str1[i]=str2[j];
}
//str1[i]='\0';
printf("合成后:%s",str1);
putchar('\n');
return 0;
}


编写一个C++程序,任意从键盘输入两个字符,能将他们按由大到小的顺序输 ...
include<iostream> using namespace std;void Swap(char & a, char & b){ if(a>b){ cout << a<<","<<b<<endl;} else { cout << b<<","<<a<<endl;} } int main(){ char a, b;cin>>a>>b;Swap(a,b);return 0;} ...

编写程序,用getchar函数读入两个字符给c1,c2如何使输出结果换行?_百度...
include <stdio.h> int main() { char c1, c2;printf("请输入两个字符:");c1 = getchar();c2 = getchar();printf("你输入的两个字符是:%c、%c\\n", c1, c2);return 0;} 注意,在使用getchar函数时,需要注意输入缓冲区中可能存在的多余字符。为了避免这种情况,可以在输入完第一个...

编写一个函数实现两个字符串的连接(不使用库函数strcat).这个用C语...
void fun (char s1[],char s2[]){ int i,j;for (i=0;s1[i] !=’\\0’; i++); \/*求出的i为pA字符的总长度,包括结束标记位*\/ for (j=0;s2[j] !=’\\0’; j++)s1[i++]=s2[j]; \/*将pB字符串连在pA字符串的后面*\/ s1[i]='\\0’; \/*在字符串最后加上结束标记符*...

c语言:编写一个字符串连接程序,它的功能是把两个不知道 长度的字符串...
include<iostream> include<string> using namespace std;void main(){string s1,s2,s;cin>>s1>>s2;s=s1+s2;cout<<s<<endl;} 本例是在Visual C++ 6.0上运行的其他标准C++软件运行的程序与上述程序略有不同,如:include<iostream> include<string> using namespace std;int main(){string ...

我用C语言编写将两个字符串组合成一个字符串的的程序,在输出时会出现乱...
include<stdio.h> include<string.h> int main(){ char a[20], b[20], c[40],*p,*q,*r;r=c;scanf("%s",a);scanf("%s",b);for(p=a;*p!='\\0';p++,r++)r=*p;for(q=b;*q!='\\0';q++,r++)r=*q;r='\\0';printf("%s",c);} 加一行*r='\\0';就好了 ...

编写一个C程序,功能是:从键盘输入两个字符串str1 str2,并将字符串 str...
由于C的字符串是由字符数组操作的,所以这种题得保证字符数组str1能放得下它自身和拷贝在它后面的str2的内容。不用库函数的话可以如下操作:include "stdio.h"int main(int argc,char *argv[]){char str1[301],str2[101];int i,j;printf("Please enter 2 strings...\\n");scanf("%200s%...

编写一个程序来实现交换两个字符型变量的值.
cout<<"请输入您的弟二个字符:"<<endl;cin>>ch2;char_change(ch1,ch2);} void char_change(char &pch1,char &pch2) \/\/函数体 { char temp;temp=pch1;pch1=pch2;pch2=temp;cout<<"您输入的第一个字符是:"<<pch2;cout<<"您输入的第二个字符是:"<<pch1<<endl;cout<<"改变...

请编写一个程序,利用指针实现两个字符串的连接
程序代码如下:include<stdio.h> include<stdlib.h> \/\/获取初始化的字符数组 char* initialize(int length);int main(void){ char *s1, *s2, s;int length, i=0, cnt=0;\/\/输入字符串长度 printf("请输入这两串字符的最大长度:");scanf("%d",&length);\/\/初始化 s1 = initialize(length...

c语言 写一个函数能将两个字符串连接,在主函数中调用
这样就可以了,我已经在vc6通过调试运行了,不过要注意一点哦,虽然c语言里面没有string类型的变量,但是在c++里面有,所以为了防止不必要的麻烦,你这里的变量名字最好不要用string include<stdio.h> void stringcat(char str1[],char str2[],char str[]){ int i,j;for(i=0;str1[i]!='\\0...

编程序,用getchar函数读入两个字符给C1,C2
getchar() 表示从键盘读取一个字符。注意:回车、空格等只要能在键盘上表示的都是字符。所以输入时要连续输入,不要用任何东西分隔,如:输入:AB<回车> 结果为:A,B 你反映的问题只有输出了第一个,是因为你在输入时中间添加了分隔,如:输入:A<回车> B<回车> 结果为:A,...

新民市15634297031: 编一个程序,将两个字符串连接起来,不要用strcat函数,编简单点亲 -
诏苏罗迈: void istrcat(char *a, char *b){int i;int la = strlen(a), lb = strlen(b);for(i = la; i < la + lb; i++)a[i] = b[i - la];a[i] = 0; }

新民市15634297031: 用c语言编写程序,将两个字符串连接起来,不要用strcat函数 -
诏苏罗迈: #include <stdio.h>#include <string.h> void strc(char c1[],char c2[]); void main() { char s1[30]="abc"; char s2[30]="def"; strc(s1,s2); //请在后面补充strc函数的功能,完成两个字符串的连接 puts(s1); } void strc(char c1[],char c2[]) { //请填空,完成两个字符串的连接 int i,j; for(i = 0; c1[i]; i ++); for(j = 0; c2[j]; j ++) c1[i+j] = c2[j]; c1[i+j] = 0; }

新民市15634297031: C语言编程:编一程序,将两个字符串联接起来,不要用Strcat函数. -
诏苏罗迈: 思路:输入两个字符串a和b,首先找到第一个字符串a的结束位置,接着把b的所有元素放到a的末尾,最后加上结束标志. 参考代码: #include<stdio.h> void mystrcat(char a[],char b[]){int i=0,j=0;while(a[i++]!='\0');//找到a的结束位置i--;...

新民市15634297031: 编写一个程序,将两个字符串连接起来,不用strcat函数. -
诏苏罗迈: 我觉得你应该先描述一下你为什么认为会有 j=j+1......首先我猜,可能是逻辑没理清.首先要明白,在第二个 wile 语句执行前,i 其实是处于字符串最末尾的'\0'位置,而 j 是等于 0.而每个字符串末尾的'\0'就是用来标识一个字符串结束的,所以拼...

新民市15634297031: 编一程序,将两个字符串连接起来,不要strcat函数 -
诏苏罗迈: 看到帖子,回一下吧,由于你没有告诉是否需要分配空间,所以我默认就分配一下啦~~ 程序没有测试,如果编译不过自己修改下就可以了,应该没有问题~~#include int starcat_test(char * star1, char * star2) { char * cStr; int iStrLenSum; if (NULL =...

新民市15634297031: 编写程序,将两个字符串连接起来 -
诏苏罗迈: main() { char a[100]; char b[30]; //为什么是100 30 呢 -> 可以根据需要改变长度,但a数组长度最好大于b数组长度,因为a数组要存放连接后的字符串int i,j; gets(a); gets(b);for(j=0,i=strlen(a);b[j]!='\0';i++,j++) //解释 这是什么意思呢?-> 因为要把...

新民市15634297031: 编写一个程序,将两个字符串连接起来?编写一个程序,将两个字符串连
诏苏罗迈: 函数头我就不和你写了! int a[20],b[20],i=0,j=0; while(a[i]!='\0') { i++; } while(b[i]!='\0') { a[i++]=b[i++]; } a[i]='\0'; printf("%s",a); 就可以了!!

新民市15634297031: 编一程序,将两个字符串连接起来,不要用 stract 函数 -
诏苏罗迈: #include<stdio.h> int main() { char a[205],b[105]; while(scanf("%s%s",a,b)==2) { int i,j; for(i=0;a[i];i++) ; for(j=0;b[j];j++) a[i+j]=b[j]; a[i+j]=0; puts(a); } }

新民市15634297031: 编写程序将由键盘输入的两个字符串连接起来(不允许调用字符串函数) -
诏苏罗迈: char a[80];b[80]; int i,j; for(i=0;a[i]!='\0';i++) ; for(j=i,i=0;b[i]!='\0';i++,j++) a[j]=b[i]; a[j]='\0'; ok了,字符串数组a里就是2个字符串连接后的字符串

新民市15634297031: 编一个程序,将两个字符串连接起来,不要用strcat
诏苏罗迈: #include <stdio.h> char *strcat(char *dest,char *src){ char *p=dest,*q=src; while(*p!='\0') p++; while(*q!='\0'){ *p=*q; p++; q++; } *p='\0'; return dest; } int main(int argc, char* argv[]) { char a[100]="Hello "; char b[50]="World!"; printf("%s\n",strcat(a,b)); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网