| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1837 人关注过本帖
标题:字符数组的长度
只看楼主 加入收藏
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
 问题点数:0 回复次数:12 
字符数组的长度

#include<stdio.h>

/* strcat: concatenate t to end of s; s must be big enough */
void strcat(char s[], char t[])
{
int i, j;

i = j = 0;
while (s[i++] != '\0'); /* find end of s */
while ((s[i++] = t[j++]) != '\0'); /* copy t */
}

int main (void)
{
char s[15]= "Boy And ", t[5] = "Girl"; /*如果把t[5]改为t[4],则得不到正确的值, 但"girl"的长度是为4呀. 难道要包括'\0'*/

strcat (s, t);
printf ("%s\n", s);

getch ();
return 0;
}

搜索更多相关主题的帖子: 字符 长度 
2006-05-17 19:37
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

character string end symbol


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-17 19:40
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
while (s[i++] != '\0'); /* find end of s */
while ((s[i++] = t[j++]) != '\0');

have question , you see see

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-17 19:41
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
while (s[i++] != '\0'); /* find end of s */
i=i-1;
while ((s[i++] = t[j++]) != '\0'); /* copy t */

The qusetion is here!

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-17 19:50
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
[QUOTE]/*如果把t[5]改为t[4],则得不到正确的值, 但"girl"的长度是为4呀. 难道要包括'\0'*/[/QUOTE]

对!
楼上俩个都错了:)

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-17 19:53
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 
int i, j;

i = j = 0;
while (s[i++] != '\0'); /* find end of s */
while ((s[i++] = t[j++]) != '\0'); /* copy t */
这是什么循环?看不懂.怎么没有循环体啊?


2006-05-17 19:57
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

呵呵,小时候看这种高密度代码感到很有趣,
后来被老师骂了一顿,规矩了。楼主您要理解知识点,搞这种蛮好,
但希望不要应用到实际.....


对不礼貌的女生收钱......
2006-05-17 19:57
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
4楼是对的

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-17 19:57
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 


不好意思..老K.你再回复的刚才没看见..嘿嘿..

[此贴子已经被作者于2006-5-17 20:02:10编辑过]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-17 20:00
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
以下是引用SunShining在2006-5-17 19:50:00的发言:
while (s[i++] != '\0'); /* find end of s */
i=i-1;
while ((s[i++] = t[j++]) != '\0'); /* copy t */

The qusetion is here!

谢谢. 如果是while (s[i++] != '\0'); 则递增到s[9]. 但如果是while (s[++i] != '\0'); 和while (s[i= i+1] != '\0'); ,则只递增到s[8].

是不字符数组"Boy And "的'B'前面还有一个空格or NULL? 不然如果使用++i, 则第一次时s[++i]会等于s[1] = 'o'. 而不等于'B. '这样也可以解释为什么i++时, i会变为s[9] 才等于'\0'. 当最终输出时,实际上空格不会被显示.

2006-05-18 09:06
快速回复:字符数组的长度
数据加载中...
 
   



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

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