单选题 以下程序运行后的输出结果是
#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。