C语言 将两个字符数组的内容连接后存放到另一个字符数组中 使用gets()输入字符串给字符数组,统计字符数组

将两个字符数组的内容连接后存放到另一个字符数组中
使用gets()输入字符串给字符数组,统计字符数组中某个字符的个数

C语言

#include <stdio.h>
#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;
}

不知道楼主的要求我基本用库函数写的,不知道符不符合要求,不懂得恳请在提问
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-02
/*
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;
}追问

要存放到另外一个 数组里面 不是 存放到 S1

追答

没看明白你的追问,s1和s2都是数组呀!难倒希望存放到另一个数组中?
char *mystrcat(char s[],char *s1, char *s2) { // s <= s1 + s2
char *p = s,*p1 = s1,*p2 = s2;
while(*p++ = *p1++);
while(*p++ = *p2++);
return s;
}

本回答被网友采纳
第2个回答  2012-07-01
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);

}
没编译 你自己试试吧。
相似回答