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

#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
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
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
请各位帮忙解释10楼的问题. 谢谢.
2006-05-18 10:32
快速回复:字符数组的长度
数据加载中...
 
   



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

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