问题
单项选择题
有以下程序 #include<string.h> main() { char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde"; strcpy(p+strlen(q),r);strcat(p,q); printf("%d%d\n",sizeof(p),strlen(p)); } 程序运行后的输出结果是
A.20 9
B.9 9
C.20 11
D.11 11
答案
参考答案:C
解析: 函数strlen()返回的是数组的实际长度,而sizeof返回的是数组定义的总长度。因为字符数组p[20]定义为20字节长度,所以sizeof(p)的值为 20。“strcpy(p+strlen(q),r);”语句的功能把字符数组 r拷贝到字符数组p从p[3]开始到p[7]的位置中,这时字符数组p的有效字符长度为8。然后再执行"strcat (p,q);”语句(字符串连接),即把字符数组q连接到字符数组p后面,这时字符数组p的有效长度为11。