问题 单项选择题

有以下程序:
# include<stdio.h>
main()
char*p,*q;
p=(char *)malloc(sizeof(char)* 20);q=p;
scanf("%s %s",p,q);printf("%s %s\n",p,q);

若从键盘输入;abc def<回车>,则输出结果是 ______。

A) def def
B) abc def
C) abe d
D) d d

答案

参考答案:A

解析: 本题考查%s控制符在scanf函数中的应用。scanf函数中%s控制符的作用是将键盘输入的字符串送到内存,输入的字符串从第一个非空格字符算起,遇到空格或回车就认为是输入结束。本题中执行语句scanf("%s%s",p,q)时,从键盘输入abc def<回车>后,指针变量p指向字符串"abc\0",q指向字符串"def\0",但是由于p和q指向同一个存储单元,所以存储单元中存放的是"def\0",printf函数的输出结果为def def。

名词解释
单项选择题