| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1483 人关注过本帖
标题:[求助]睇吾明最后这个while的语句是什么意思?
只看楼主 加入收藏
刀仔
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-10-19
收藏
 问题点数:0 回复次数:8 
[求助]睇吾明最后这个while的语句是什么意思?
下面这段是要把字符数组STR2放到字符数组STR1的后面,但是最后的while((str1[i++]=str2[j++])!='\0');是什么意思呢?
I#include "stdio.h"
main()
{
char str1[80],str2[80];
int i=0,j=0;
gets(str1);
gets(str2);
while(str1[i]!='\0')i++;
while((str1[i++]=str2[j++])!='\0'); /*这段要怎么理解?这是只有表达式没有语句吗?但括号里面的应该不是表达式吧?*/
printf("结果为:%s\n",str1);
}

以下是引用刀仔在2006-11-20 10:53:42的发言:

如果我在STR1这数组输入this is,str2数组里填入PAN,那
str1[0]='t'
str1[1]='h'
str1[2]='i'
str1[3]='s'
str1[4]=' '
str1[5]='i'
str1[6]='s'
str1[7]='\0'
那while(str1[i]!='\0')i++;这条语句循环结束后i应该是等于7了。
而while((str1[i++]=str2[j++])!='\0');里面的str1[i++]不是变成了str1[8]了吗?那str2数组第一个字符P不就去到str1[8]里面去了吗?那到结束时中间不就有一个结束符吗?这主要是这里不太明白。
可能我才是刚刚开始自学,所以很多地方都不太明白。

能解答一下这个吗??

[此贴子已经被作者于2006-11-21 8:14:05编辑过]

搜索更多相关主题的帖子: 语句 
2006-11-17 17:18
guzhou
Rank: 1
等 级:新手上路
威 望:1
帖 子:247
专家分:0
注 册:2006-11-4
收藏
得分:0 
((str1[i++]=str2[j++])!='\0')
把str2 copy 到str1,
gets读入字符串时自动在末尾加上'\0'

2006-11-17 17:23
fyi1106
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-14
收藏
得分:0 
第一个while是求得str1的长度,第二个while是把str2的内容复制到str1后面。
(str1[i++]=str2[j++])是将str2的内容复制到str1的尾部,当到了str2的尾部时,表达式(str1[i++]=str2[j++])的值为'\0',结束循环。
要注意,每一个表达式都有值。

[此贴子已经被作者于2006-11-17 18:37:55编辑过]


JavaScript forever!
2006-11-17 18:35
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
意思同楼上差不多。
#include "stdio.h"
main()
{
char str1[80],str2[80];
int i=0,j=0;
gets(str1);
gets(str2);
while(str1[i]!='\0')i++;
while((str1[i++]=str2[j++])!='\0'); /*注意while((str1[i++]=str2[j++])!='\0'); 是一条语句,括号里是表达式*/
printf("结果为:%s\n",str1);
}

谁有强殖装甲第二部,可以Q我460054868
2006-11-17 18:56
刀仔
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-10-19
收藏
得分:0 

如果我在STR1这数组输入this is,str2数组里填入PAN,那
str1[0]='t'
str1[1]='h'
str1[2]='i'
str1[3]='s'
str1[4]=' '
str1[5]='i'
str1[6]='s'
str1[7]='\0'
那while(str1[i]!='\0')i++;这条语句循环结束后i应该是等于7了。
而while((str1[i++]=str2[j++])!='\0');里面的str1[i++]不是变成了str1[8]了吗?那str2数组第一个字符P不就去到str1[8]里面去了吗?那到结束时中间不就有一个结束符吗?这主要是这里不太明白。
可能我才是刚刚开始自学,所以很多地方都不太明白。

2006-11-20 10:53
刀仔
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-10-19
收藏
得分:0 
顶上去先。。
2006-11-21 08:15
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 
以下是引用刀仔在2006-11-20 10:53:42的发言:

如果我在STR1这数组输入this is,str2数组里填入PAN,那
str1[0]='t'
str1[1]='h'
str1[2]='i'
str1[3]='s'
str1[4]=' '
str1[5]='i'
str1[6]='s'
str1[7]='\0'
那while(str1[i]!='\0')i++;这条语句循环结束后i应该是等于7了。
而while((str1[i++]=str2[j++])!='\0');里面的str1[i++]不是变成了str1[8]了吗?那str2数组第一个字符P不就去到str1[8]里面去了吗?那到结束时中间不就有一个结束符吗?这主要是这里不太明白。
可能我才是刚刚开始自学,所以很多地方都不太明白。

i++是先执行语句,再让i自增1,所以str2的第一个字符是附给str1[7].


2006-11-21 11:58
财鸟
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2006-11-2
收藏
得分:0 

我靠!!!!!!!!!!你几年C龄了!!!!这就看不懂!!!!!!!!!!!!11
while((str1[i++]=str2[j++])!='\0');这句就是把STR2[J++]值传替给STR2[I++],后面的那个不等于就是里面的条件了!!!!!!!!
如果/0的循环就结束!!!!!!!!!!!!!1
因为字符串是以/0结束的!!!!!!!!!!
它不算在字符串的长度里面!!!!!!!!!!!!!!!!

不瞒你是说!!!!!!!!!!
我才学两周!!!!!!!!!!!

2006-11-21 12:54
Welton
Rank: 2
等 级:论坛游民
帖 子:65
专家分:38
注 册:2006-10-25
收藏
得分:0 
前++和后++不会吧!自己好好查阅一下资料吧!

只是喜欢编程而已!
2006-11-21 13:46
快速回复:[求助]睇吾明最后这个while的语句是什么意思?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017883 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved