鱼C论坛

 找回密码
 立即注册
查看: 2556|回复: 2

请教一个问题!

[复制链接]
发表于 2011-12-6 22:54:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
void connect(char str1[],char str2[])
{int i,j;
i=strlen(str1);
for(j=0;str2[j]!='\0';j++)
str1[i+j]=str2[j];
str1[i+j]='\0';

}

main()
{char str1[200],str2[100];
printf("please input the first string:\n");
gets(str1);
printf("please input the second string:\n");
gets(str2);
connect(str1,str2);
printf("after connect:\n");
puts(str1);
}

红色地方的代码我弄不懂,还有就是在定义的函数中用用数组名str1[]来接受参数,那么此函数中str1[]的长度可否这样算:长度为i = sizeof(str1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-6 23:30:34 | 显示全部楼层
本帖最后由 Mr.C 于 2011-12-6 23:42 编辑

i=strlen(str1);
for(j=0;str2[j]!='\0';j++)
str1[i+j]=str2[j];
str1[i+j]='\0';

红色两句的意思就是把str2的元素加到 str1后面
因为str1本身就有i个元素。
要加到它后面,当然要从 str[i + j]这个单元开始罗。(j从0一直增加到str2本身的长度)

“函数中str1[]的长度可否这样算:长度为i = sizeof(str1)”
这个是不行的。
因为strlen返回字符串长度。
sizeof返回数组长度。
具体区别如下:
char a[100] = "abcd"
strlen(a) = 4
sizeof(a) = 100

了解了吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-12-7 13:17:53 | 显示全部楼层
本帖最后由 lushousxu 于 2011-12-7 13:19 编辑

#include <stdio.h>
void connect(char str1[],char str2[])
{
        int i,j;
        i = strlen(str1);
        for(j=0;str2[j]!='\0';j++)
        {
                str1[i+j]=str2[j];
        }
        str1[i+j]='\0';
}

int main(int argc, char *argv[])
{
        char str1[200],str2[100];
        printf("please input the first string:\n");
        gets(str1);
        printf("please input the second string:\n");
        gets(str2);

        connect(str1,str2);
        printf("after connect:\n");
        puts(str1);

        return 0;
}

谢谢,原来的代码可读性太差,我把红色的两句看成
for(j=0;str2[j]!='\0';j++)
{
    str1[i+j]=str2[j];
    str1[i+j]='\0';
}
刚刚才醒悟过来...
关于sizeof和strlen的区别学习了!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 08:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表