问题 单项选择题

有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是( )。

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

答案

参考答案:D

解析: 本题主要考查的是输入函数scanf和gets。gets()函数的原型是char*gets(char+s);。功能是通过键盘读入一个字符串,并放到指针参数s所指的内存地址中。选项A) 给gets传入的实参是&s[0],也就是数组s的第1个元素的地址,这是合法的。选项C) 传入的是数组名s,它出现在表达式中表示的是数组的首地址,所以也是合法的。scanf(函数要求输入的参数均为地址形式。选项B) 中表达式s+1,表示的是数组首地址往后移动一位的地址,所以是合法的。选项D) 直接引用数组中下标为1的元素,这是不合法的。

单项选择题
单项选择题