问题 单项选择题

有下面程序段:
#include "stdio.h"
#include "string.h"
main()
char a[3][ 20]="china", "isa", "bigcountry!";
char k[100]=0, *p=k;
int i;
for(i=0; i<3; i++)
p=strcat(p, a[i]);
i=strlen(p);
printf("%d\n", i);
则程序段的输出结果是

A) 18
B) 19
C) 20
D) 21

答案

参考答案:B

解析: 字符串连接函数strcat的调用形式:strcat(s1,s2)。此函数将s2所指字符串的内容连接到s1所指字符串后面,并自动覆盖s1字符串末尾的尾标,函数返回s1的地址值。本题中首先将二维数组中各行的字符串都复制到了指针p所指向的堆数但k的地址空间,然后用strcat函数求出k数但的长度;即19。

单项选择题
单项选择题