1.c语言连接字符串
S楼主定义的数组a只有3个元素,最后连接的时候把a和b的一起往里面放,当然会出现内在错误.
再有scanf("%c",&a[i]);和scanf("%c",&b[i]);用这两个语句读取字符串很可能会出错的 可以在%和c之间加一个空格来解决,具体原因楼主可以查看一下scanf的原码
借用别人的一段代码:
#include <stdio.h>
#include <stdlib.h>
void lianjie(char *p1,char *p2);/*字符串连接函数,连接后保存在p1中*/
int longth(char *p);/*判读字符串长度*/
int main()
{
char strfrom[50]="i am a good student";
char strto[20]=" i love c";
lianjie(strfrom,strto);
printf("%s",strfrom);
return 0;
}
void lianjie(char *p1,char *p2)
{
int i=0;int j=0;int k;
i=longth(p1);
j=longth(p2);
k=i+j;
for(j=0;i<k+1;j++)
{
*(p1+i)=*(p2+j);
i++;
}
}
int longth(char *p)
{
int i=0;
for (;*(p+i);i++);/*遇到\0,循环结束*/
return i;
}
2.C语言编写字符串连接
int i=0,j;
char ch;
char str1[100],str2[100];
printf("请输入2个字符串:\n");
scanf("%s %s",str1,str2);
printf("合并前str1:%s,str2:%s\n",str1,str2);
strcat(str1,str2);
while(str1[i]!='\0')
{
for(j=i;j<strlen(str1);j++)
{
if(str1[i]>str1[j])
{
ch=str1[i];
str1[i]=str1[j];
str1[j]=ch;
}
}
i++;
}
printf("合并后%s\n",str1);
3.C语言中字符串连接怎么解决
可以使用字符串连接函数strcat()函数,头文件是#include<string.h>;
举例如下:
两个字符串char [100]="abc",b[50]="def";
将其变为一个字符串并输出
#include<stdio.h>
#include<string.h>
int main()
{
char a[100]="abc",b[50]="def";
strcat(a,b);
printf("%s\n",a);
}
拓展资料
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
4.c语言连接字符串
#include<stdio.h>
void main()
{
char a[80],b[40];
int i=0,j=0;
printf("input string1:");
scanf("%s",a); //输入字符串a
printf("input string2:");
scanf("%s",b); //输入字符串b
while(a[i]!='\0') //这个while作用是下标i从0开始遍历数组a直到找到数组a的结束符.
i++;
while(b[j]!='\0') //这个while是将数组b赋值到数组a从结束符开始往后的一块区域中.
a[i++]=b[j++];
a[i]='\0'; //重新增加一个字符串结束符.
printf("the new string is :%s\n",a);
}
5.C语言编程:字符串的连接
scanf("%s %s",a[100],b[100]);改为scanf("%s %s",a,b);
strcat(char a[],const char b[]);改为strcat( a, b);
完整程序:
#include
#include
main()
{
char a[100],b[100];
scanf("%s%s",a,b);
strcat(a,b);
printf("%s",a);
}
6.编写C连接两个字符串的函数
你的 char strc(char *pa,char *pb) 函数里的 pa++ 和 pb++ 都只是把指针+1,字符串内容没有任何改变。而 return *pa 返回的是 pa 的第一个字符,而把一个字符 (char) 用 %s 的方式输出,自然也不能得到正确的结果。
思路1:
把字符串 a 的长度加倍为200,然后把整个 b 字符串的内容全部复制到 a 字符串的末尾。
char a[200],b[100];
int i, j;
printf("请输入一行字符,在100个字以内\n");
gets(a);
printf("请再输入一行字符,在100个字以内\n");
gets(b);
// 查找 a 字符串的结尾
i = 0;
while(a[i] != 0)
{
i++;
}
// 把 b 字符串复制到 a 字符串末尾
j = 0;
while(b[j] != 0)
{
a[i] = b[j];
i++;
j++;
}
printf("两行字符合并后的结果:\n");
printf("%s\n", a);
思路2:
定义一个字符串 c, 先把 a 字符串的内容复制到 c 中,然后再把 b 字符串的内容追加上去。
算法与思路1大同小异,就不详细写出来了。
7.C语言编写函数:字符串的连接
#include <stdio.h>
#include <malloc.h>
char *str_cat(const char *str1, const char *str2);
int main(){
char *str1 = "abc";
char *str2 = "def";
char *cat = str_cat(str1, str2);
printf("[%s] + [%s] = [%s]\n", str1, str2, cat);
free(cat); //释放内存
return 0;
}
char *str_cat(const char *str1, const char *str2){
int len1 = 0;
int len2 = 0;
for (len1 = 0; *(str1+len1) != '\0'; len1++){} //获取str1长度
for (len2 = 0; *(str2+len2) != '\0'; len2++){} //获取str2长度
char *ret = (char *)malloc(sizeof(char)*(len1+len2+1)); //申请动态空间
/*内存赋值*/
int i;
for (i=0; i<len1; i++){
*(ret+i) = *(str1+i);
}
for (i=0; i<len2; i++){
*(ret+len1+i) = *(str2+i);
}
*(ret+len1+len2) = '\0';
return ret;
}
8.C语言中字符串如何连接
#include <string.h>
第一种方法
char buf[128]="xyz";
strcat(buf, "abc");
第二种方法
strcpy(buf + 3, "abc");
第三种方法
memcpy(buf+3, "abc", 4);
前提是要先懂什么是字符串,如果不懂的话,那太容易出错了。优酷上找" C学习指南”的第5.2讲,打打基础。
9.c语言连接字符串
S楼主定义的数组a只有3个元素,最后连接的时候把a和b的一起往里面放,当然会出现内在错误.再有scanf("%c",&a[i]);和scanf("%c",&b[i]);用这两个语句读取字符串很可能会出错的 可以在%和c之间加一个空格来解决,具体原因楼主可以查看一下scanf的原码 借用别人的一段代码:#include