C语言gets函数的疑问

gets函数的参数是字符串数组名,比如说定义一个数组char st[15],是不是只需要写成gets(st),就能输入一个15元素的字符串了?我写成gets(st[15])或者gets(st[3])是不是错误的?

gets是读入一个字符串,你可以看一下gets的函数原型:
char*gets(char*buffer);
函数要求输入一个字符指针,然后返回一个字符指针。
所以你想,char st[15]是一个字符数组,st是数组名,也是数组的首地址,所以

gets(st)就是把st的首地址传到函数里面,是满足gets函数原型要求。

而st[15]本身是错误的,因为字符数组st[15]的元素是st[0]到st[14],st[15]是不存在的
对于st[3],他本身是st数组中第四个元素,是一个值,不是指针,自然不能用作gets()的变量

你可以使用st[3]=getchar()来读入一个字符给st[3]
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-03
是写成gets(st),如果写成后两种,由于函数需要指针类型,你输入的是字符类型,肯定不对,应该编译不过
第2个回答  2013-12-03
gets(&st[15]) or gets(str+15) 即可

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网