首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

初学者又来了,老师们帮忙看看

2013-10-01 
菜鸟又来求助了,老师们帮忙看看这个程序咋就没最后的输出呢?#includestdio.h//利用函数将字符串str2连接

菜鸟又来求助了,老师们帮忙看看
这个程序咋就没最后的输出呢?


#include<stdio.h>
//利用函数将字符串str2连接到str1后
char *lianjie(char *s1,char *s2);
main()
{
char str1[30],str2[30];
printf("请输入字符串str1:");
gets(str1);
printf("请输入字符串str2:");
gets(str2);
printf("连接后的函数:");
puts(lianjie(str1,str2));
}

char *lianjie(char *s1,char *s2)
{
while(*s1!='\0')
s1++;
while(*s2!='\0')
(*s1++)=(*s2++);
*s1='\0';
return s1;
}

c
[解决办法]
s1已经移到末端了,需要保存起始地址:

char *lianjie(char *s1,char *s2)
{
    char* p = s1;
    while(*s1!='\0')
        s1++;
    while(*s2!='\0')
        (*s1++)=(*s2++);
    *s1='\0';
    return p;
}


引用:
这个程序咋就没最后的输出呢?

#include<stdio.h>
//利用函数将字符串str2连接到str1后
char *lianjie(char *s1,char *s2);
main()
{
char str1[30],str2[30];
printf("请输入字符串str1:");
gets(str1);
printf("请输入字符串str2:");
gets(str2);
printf("连接后的函数:");
puts(lianjie(str1,str2));
}

char *lianjie(char *s1,char *s2)
{
while(*s1!='\0')
s1++;
while(*s2!='\0')
(*s1++)=(*s2++);
*s1='\0';
return s1;
}


[解决办法]
把你改了下 函数实现,你写实现str1的地址已经变了的

char *lianjie(char *s1,char *s2)
{
    char *tmp = s1; 
//  while(*s1!='\0')
//      s1++;
    while(*tmp != '\0')
        tmp++;
    while(*s2 != '\0')
        (*tmp++)=(*s2++);
    *tmp='\0';
    return s1; 
}

// 注意, str1的长度一定要比足够容纳str1和str2的长度和

热点排行