Ln_E 发表于 2018-1-4 16:46:02

关于不用strcat函数合并两个字符串组问题

# include <stdio.h>
int main()
{
        char s1, s2, s3;
        int i, j;
        gets(s1);
        gets(s2);
        for(i = j = 0; s1;)
        s3 = s1;
        for(i = 0; s2;)
        s3 = s2;
        s3 = '\0';
        puts(s3);
        getchar ();
        return 0;
}

这段代码并不是我打出来的,求大神指导一下
关于        for(i = j = 0; s1;)这里是什么意思
谢谢呃。。。

BngThea 发表于 2018-1-4 17:15:06

for(i = j = 0; s1;)
初始化 i,j 为0
循环结束条件就是字符串s1到达 '\0'

风过无痕丶 发表于 2018-1-5 00:07:06

循环三大要素!
1. 初始化计数器
2.循环条件
3.更新计数器

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

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

下面的循环同理

libocdf 发表于 2018-1-5 19:36:24

for(i = j = 0; s1;)
    s3 = s1;

i,j初始化为0
s1,因为i是递增的,所以s1的数据是变化的,直到s1=0,则循环条件终止,C语言中字符串(ansi)是以0结尾的

Ln_E 发表于 2018-1-7 11:35:04

实在是谢谢大家了...
有点不好意思,
这几天没有上来回复是因为要准备考试,
本来早就想上来看看了。。
托大家的福,c平时成绩貌似拿了84分...诶嘿嘿
虽然不高,不过我还是很感谢大家
页: [1]
查看完整版本: 关于不用strcat函数合并两个字符串组问题