当前位置: 代码迷 >> C语言 >> 高手帮忙啊~
  详细解决方案

高手帮忙啊~

热度:132   发布时间:2008-05-02 18:15:37.0
高手帮忙啊~
看看这个哪里错了啊?   是把两个字符串连接在一起的程序哈!  
多谢哦~~~~
#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);



}
搜索更多相关的解决方案: char  printf  scat  

----------------解决方案--------------------------------------------------------
长度问题,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;
}

----------------解决方案--------------------------------------------------------
  相关解决方案