C中定义数组char c[100]后用scanf(%s,c)字符数组长度变化为字符串的长度。strcpy(ch1,ch2)ch1长度不变?

C语言
情况一:定义字符串char c[100]后用scanf(%s,c)字符数组长度变化为输入的字符串的长度。
情况二:同样先定义字符串并初始化char ch1[]={"Welcome"};接着用字符串拷贝函数strcpy(ch1,ch2);将字符串ch2拷贝到目标字符串ch1,这时为什么ch1长度不变?
为什么情况一字符串长度定义后然后通过给它赋一个字符串长度就变,而情况二长度不变,长度仍然为8?

情况一:定义字符串char c[100]后用scanf(%s,c)字符数组长度变化为输入的字符串的长度。
c的长度没变,还是100, c的长度你可以用sizeof(c)得出,还是100,如果用strlen(c)统计c的长度,那就是输入的字符串的长度,因为strlen统计字符串长度的方式是碰到'\0'就停止,所以不是c的实际长度
情况二:同样先定义字符串并初始化char ch1[]={"Welcome"};接着用字符产拷贝函数strcpy(ch1,ch2);将字符串ch2拷贝到目标字符串ch1后这时为什么ch1长度不变?
和情况1一样,假设ch2[]="abc"; 那么strcpy(cha,ch2)以后 strlen(ch1)就是3,而sizeof(ch1)还是8
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-18
你想问什么???
相似回答