截止阀可以立着装吗?:编一程序,将两个字符串连接起来,不要用strcat函数

来源:百度文库 编辑:中科新闻网 时间:2024/05/02 17:54:33

上边那位同志的操作有些危险,还有错误。
函数的引数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]);
}

void *mystrcat(char* s1, char* s2)
{
if (s1==NULL||s2==NULL) return; //错误判断
while(*s1++);
s1--;
while(*s1++ = *s2++); //是一个=(赋值),不是==(比较)
}
以上程序将s2串在s1后面

将两个字符串连接起来,不用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>
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;
}