当前位置: 代码迷 >> C语言 >> 字符数组的长度
  详细解决方案

字符数组的长度

热度:215   发布时间:2006-05-17 19:37:00.0
字符数组的长度

#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;
}

搜索更多相关的解决方案: 字符  长度  

----------------解决方案--------------------------------------------------------

character string end symbol


----------------解决方案--------------------------------------------------------
while (s[i++] != '\0'); /* find end of s */
while ((s[i++] = t[j++]) != '\0');

have question , you see see
----------------解决方案--------------------------------------------------------
while (s[i++] != '\0'); /* find end of s */
i=i-1;
while ((s[i++] = t[j++]) != '\0'); /* copy t */

The qusetion is here!

----------------解决方案--------------------------------------------------------
[QUOTE]/*如果把t[5]改为t[4],则得不到正确的值, 但"girl"的长度是为4呀. 难道要包括'\0'*/[/QUOTE]

对!
楼上俩个都错了:)

----------------解决方案--------------------------------------------------------
int i, j;

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


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
4楼是对的
----------------解决方案--------------------------------------------------------


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

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


----------------解决方案--------------------------------------------------------
以下是引用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'. 当最终输出时,实际上空格不会被显示.


----------------解决方案--------------------------------------------------------

  相关解决方案