C语言 将两个字符数组的内容连接后存放到另一个字符数组中 使用gets()输入字符串给字符数组,统计字符数组
作者&投稿:绪童 (若有异议请与网页底部的电邮联系)
思路:两个字符串的拼接可以使用strcat函数。
strcat函数原型: char *strcat(char *s1,char *s2);
需要引入头文件:#include
功能:把s2所指字符串添加到s1结尾处并添加'\0'。
注意:s1必须有足够的空间来容纳s1和s2的字符串。
参考代码:
#include "stdio.h" #include "string.h" int main() {char s1[200],s2[100];gets(s1);gets(s2);strcat(s1,s2);puts(s1); return 0;}/*运行结果:asfds123423asfds123423 */
这是因为,你的程序中有scanf的调用,它不读取 回车,所以在输入缓冲里面剩下了 这个字符,因此gets下次读取的时候就会把这个字符读完后就又进入了下一 4门课成绩的输入。
改变的办法:
for(i=0;i<2;i++)
{
fflush(stdin);//清空缓冲
gets(st[i].name);
scanf("%d,%d,%d,%d",&st[i].no,&st[i].score1,&st[i].score2,&st[i].score3);
ave[i]=(st[i].score1+st[i].score2+st[i].score3)/3;
}
#include <string.h>
char s1[256];
char s2[256];
char s3[512];//s3=s1+s2
int main()
{
int i,sum=0;
char tmp;//要统计的字符
printf("请输入s1,s2:\n");
gets(s1);//输入字符串s1,s2
gets(s2);
//将s1的字符串复制到s3中
strcpy(s3,s1);
//将s3与s2相连接,可以理解为:s3=s1+s2
strcat(s3,s2);
// printf("s3=\"%s\"\n",s3);
printf("请输入要统计的字符:");
tmp=getchar();
for(i=0;i<strlen(s3);i++)
{
if(s3[i]==tmp) sum++;
}
printf("\"%c\"出现的次数: %d\n",tmp,sum);
return 0;
}
不知道楼主的要求我基本用库函数写的,不知道符不符合要求,不懂得恳请在提问
/*
s1 = Visaul stuio 2010
s2 = Visual C++ 6.0
"Visaul stdio 2010Visual C++ 6.0" + "Visual C++ 6.0" = "Visaul stuio 2010Visual C++ 6.0"
要统计上面的字符串中的字符 c = 0
Visaul stdio 2010Visual C++ 6.0中共有3个字符0。
Press any key to continue
*/
#include <stdio.h>
char *mystrcat(char *s1, char *s2) { // s1 + s2 => s1
char *p1 = s1,*p2 = s2;
while(*p1) ++p1;
while(*p1++ = *p2++);
return s1;
}
int countch(char *s, char c) { // 返回出现在s中的字符c的个数
int count = 0;
char *p = s;
while(*p) {
if(*p == c) ++count;
++p;
}
return count;
}
int main() {
char s1[81],s2[81],ch;
printf("s1 = ");
gets(s1);
printf("s2 = ");
gets(s2);
printf("\"%s\" + \"%s\" = \"%s\"\n",s1,s2,mystrcat(s1,s2));
printf("要统计上面的字符串中的字符 c = ");
fflush(stdin);
scanf("%c",&ch);
printf("%s中共有%d个字符%c。\n",s1,countch(s1,ch),ch);
return 0;
}
int main()
{
char s1[50],s2[50],s3[100],c;
int i=0,count=0;
memset(s1,0,sizeof(si));
memset(s2,0,sizeof(si));
memset(s3,0,sizeof(si));
printf("input string1:\n");
gets(s1);
printf("input string2:\n");
gets(s2);
sprintf(s3,"%s%s",s1,s2);
printf("s3 is %s\n",s3);
printf("input letter:");
c=getchar();
for(i=0;i<strlen(s3);i++)
{
if(s3[i]==c) count++;
}
printf("%c is:%d",c,count);
}
没编译 你自己试试吧。
尚栋替尼: 函数名: strcat 功 能: 字符串拼接函数 用 法: char *strcat(char *destin, char *source); 程序例:#include <string.h> #include <stdio.h> void main(void) { char destination[25]; char *blank = " ", *c = "C++", *Borland = "Borland"; strcpy(...
镇巴县18636532388: 如何用C语言数组编写程序,将两个字符串连接起来 - ?
尚栋替尼: #include 方法一:如mtcat所说,直接用strcat函数 方法二:编程实现strcat的功能 void main() { char s1[80],s2[80]; int i=0,j=0; puts("input two strings:"); gets(s1); gets(s2); while(s1[i]!='\0') i++; while((s1[i++]=s2[j++])!='\0'); printf("result:%s\n",s1); }
镇巴县18636532388: C语言怎么合并两个字符串? - ?
尚栋替尼: 先加头文件#include<string.h> char a[10]="123";char b[10]="abc";strcat(a,b); //连接两个字符串,连接后的字符串存放在a中,数组a中有足够空间printf("%s",a); //输出连接后的字符串或: #include<string.h> char a[10]="123"; char b[10]="abc"; char c[20]; strcpy(c,a); //把串a复制到有足够空间的c中 strcat(c,b); //把b连接到c的串尾
镇巴县18636532388: c语言编程,利用函数把字符数组b,连接到字符数组a的后面,并返回字符数组a中新的长度. - ?
尚栋替尼: 题目要连接是“字符数组”而非“字符串”.如下代码可以实现://#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h" int Connect_a_b(char *a,int la,const char *b,int lb){ a+=la,la+=lb; while(*a++=*b++,lb--); return la; } ...
镇巴县18636532388: 用c语言编写一个将两个字符串连接起来函数两个字符串由主函数输入, 连接后的字符串也由主函数输出. - ?
尚栋替尼: #include<stdio.h> void main() {void con(char sting1[],char sting2[],char sting3[]);char s1[20],s2[20],s3[40]; printf("Input sting1: ");scanf("%s",s1);printf("Input sting2: ");scanf("%s",s2);con(s1,s2,s3);printf("%s\n",s3); } void con(...
镇巴县18636532388: C语言之指针:连接两个字符数组 - ?
尚栋替尼: 1 通过指针,找到第一个目标字符数组结尾2 将源字符数组逐项复制到目标字符数组尾部3 在最后添加结束符\0 代码:void my_str_cat(char *a, char *b) { while(*a)a++; a--; while(*b)*a++=*b++; *a='\0'; }
镇巴县18636532388: C语言编写一个程序输入两个字符串1和字符串2(两个字符串长度不超过20),把字符串2连接到字符串1后面,并输出 - ?
尚栋替尼: 说白了就是strcatchar *strcat(char *strDest, const char *strSrc) //将源字符串加const,表明其为输入参数{char *address = strDest; //该语句若放在assert之后,编译出错assert((strDest != NULL) && (strSrc != NULL)); //对源地址和目的...
镇巴县18636532388: 在C语言编中,如何运用调用函数把两个不同的字符串连接起来,并且还是数组的形式,然后在主函数中输出? - ?
尚栋替尼: void strcat(char str1,char str2) { int i,j; for(i=0;str1[i]!=0;i++); for(j=0;str2[j]!=0;j++) { str1[i]=str2[j]; i++; } str1[i]=0; } 这是我写的,C的库中有这个函数,我写这个函数是为了让你看清楚连接的原理.
镇巴县18636532388: C语言 不用连接函数strcat将字符数组2中的字符串连接字符数组1的后面 请帮我分析下谢谢 - ?
尚栋替尼: #include<stdio.h> int main() {int i,n,j;char s1[30],s2[30],s[60];printf("请给s1数组赋值,字符个数小于30,回车结束.\n");gets(s1); //输入字符串s1printf("请给s2数组赋值,字符个数小于30,回车结束.\n");gets(s2); //输入字符串s...
镇巴县18636532388: 用C语言写出一函数,将两个字符串连接,该怎么写 - ?
尚栋替尼: #include#include main() { char str1[100],str2[50]; printf("输入字符串一:"); gets(str1); printf("输入字符串二:"); gets(str2); strcat(str1,str2); printf("连接之后为:%s\n",str1); }