若有定义和语句 char *s1="12345" , *s2="1234"; printf("%d\n" ,strlen(strcpy(s1,s2))); 则输出结果是(

若有定义和语句
char *s1="12345" , *s2="1234";
printf("%d\n" ,strlen(strcpy(s1,s2)));
则输出结果是( )。

A、4
B、5
C、9
D、10

参考答案:A 怎么不是5?
求解释

按照编译来说这个是错误的 因为这二个是常量 所以无法复制
为什么是4 个人认为是1234后面还有一个\0因为系统要判断字符串的结束所以加了一个\0
而将s2复制到s1那么就是1234\0 那么输出结果就是4
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-15
strlen() 求长度不包括终止符'\0'
实际上求的是s2的长度。所以是4