以下程序运行后的输出结果是
#include <string.h>
main()
char m[20]='a','b','c','d',n[]="abc",k[]="abcde";
strcpy(m+strlen(n),k); strcat(m,n);
printf("%d%d\n", sizeof(m), strlen(m));
A) 2011
B) 99
C) 209
D) 1111
参考答案:A
解析: strlen返回的是不包括'\0'在内的数组实际长度。初始时,strlen(n)=3,函数调用strcpy(m+stlen(n),k);,将字符串k复制到m[3]到m[6]中,执行后m[20]={'a','b','c','a','b','c','d','e'}。函数调用strcat(m,n);执行后m[20]={'a','b','c','a','b','c','d','e','a','b','c'},共11个字符。但m仍然占有20个字节。所以sizeof(m)=20,strlen(m)=11。