鱼C论坛

 找回密码
 立即注册
查看: 2141|回复: 4

[已解决]关于不用strcat函数合并两个字符串组问题

[复制链接]
发表于 2018-1-4 16:46:02 | 显示全部楼层 |阅读模式

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

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

x
# include <stdio.h>
int main()
{
        char s1[100], s2[100], s3[200];
        int i, j;
        gets(s1);
        gets(s2);
        for(i = j = 0; s1[i];)
        s3[j++] = s1[i++];
        for(i = 0; s2[i];)
        s3[j++] = s2[i++];
        s3[j] = '\0';
        puts(s3);
        getchar ();
        return 0;
}
这段代码并不是我打出来的,求大神指导一下
关于        for(i = j = 0; s1[i];)这里是什么意思
谢谢呃。。。
最佳答案
2018-1-5 00:07:06
循环三大要素!
1. 初始化计数器
2.循环条件
3.更新计数器

现在接着看循环
i = j = 0;   是不是初始化计数器
s1[i] ; 是不是循环条件
没有更新计数器? 别急 往下看
s3[j++] = s1[i++]  这里的i和j是不是自增了
有了这些 接着看循环

假定输入 aaa :
s1数组开始向s3数组赋值,
第一次 赋值一个a
第二次 赋值一个a
第三次 赋值一个a
第四次,数组元素没有被初始化的元素 会被c语言初始化为0,
现在再看 s1[3] == 0   零为假!循环条件不成立!循环退出!

下面的循环同理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-4 17:15:06 | 显示全部楼层
for(i = j = 0; s1[i];)
初始化 i,j 为0
循环结束条件就是字符串s1到达 '\0'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 00:07:06 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
循环三大要素!
1. 初始化计数器
2.循环条件
3.更新计数器

现在接着看循环
i = j = 0;   是不是初始化计数器
s1[i] ; 是不是循环条件
没有更新计数器? 别急 往下看
s3[j++] = s1[i++]  这里的i和j是不是自增了
有了这些 接着看循环

假定输入 aaa :
s1数组开始向s3数组赋值,
第一次 赋值一个a
第二次 赋值一个a
第三次 赋值一个a
第四次,数组元素没有被初始化的元素 会被c语言初始化为0,
现在再看 s1[3] == 0   零为假!循环条件不成立!循环退出!

下面的循环同理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 19:36:24 | 显示全部楼层
for(i = j = 0; s1[i];)
    s3[j++] = s1[i++];

i,j初始化为0
s1[i],因为i是递增的,所以s1[i]的数据是变化的,直到s1[i]=0,则循环条件终止,C语言中字符串(ansi)是以0结尾的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-7 11:35:04 | 显示全部楼层
实在是谢谢大家了...
有点不好意思,
这几天没有上来回复是因为要准备考试,
本来早就想上来看看了。。
托大家的福,c平时成绩貌似拿了84分...诶嘿嘿
虽然不高,不过我还是很感谢大家
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-29 03:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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