高手帮忙啊~
看看这个哪里错了啊? 是把两个字符串连接在一起的程序哈! 多谢哦~~~~
#include "stdio.h"
char *scat(char s1[],char *s2)
{ char *p=s1;
for(;*p;p++)
while(*s2) *p=*s2,p++,s2++;
*p='\0';
return s1;
}
main()
{ char a[]="china",b[]="japan";
printf("a=%s b=%s",a,b); printf("\n");
scat(a,b);
printf("a=%5s",a);
}
----------------解决方案--------------------------------------------------------
长度问题,A的长度太短了
char a[100]="china",b[]="japan";
----------------解决方案--------------------------------------------------------
代码也有问题,先别看我的,自己想想
#include "stdio.h"
void scat(char s1[],char *s2)
{
char *p=s1;
for(;*p;p++);
while(*s2)
*p=*s2,p++,s2++;
*p='\0';
}
main()
{
char a[100]="china",b[]="japan";
printf("a=%s b=%s",a,b); printf("\n");
scat(a,b);
printf("a=%5s",a);
}
[[it] 本帖最后由 PcrazyC 于 2008-5-2 18:22 编辑 [/it]]
----------------解决方案--------------------------------------------------------
可能用动态分配内存比较好点
----------------解决方案--------------------------------------------------------
回复 4# 的帖子
谢谢了哈! ----------------解决方案--------------------------------------------------------
lz for 少个分号
a[] 长度不够
----------------解决方案--------------------------------------------------------
// 字符串拼接
// cosdos
// 02-05-08 23:38
//
#include <stdio.h>
char * cos_strncat(char stra[], char * strb, int n) {
int i = 0;
while(stra[i])
++i;
--n; // 留出空字符的位置
while(i < n && *strb)
stra[i++] = *strb++;
stra[i] = '\0';
return stra;
}
int main(void) {
char a[9] = "cos",
b[] = "dos";
printf("a=%s b=%s\na=%s\n", a, b, cos_strncat(a, b, sizeof(a) ) );
// 修改了的调用方式
getchar();
return 0;
}
----------------解决方案--------------------------------------------------------