永发信息网

求助有关C语言gets()语句的问题

答案:2  悬赏:80  手机版
解决时间 2021-03-22 00:04
求助有关C语言gets()语句的问题
最佳答案
因为你用了gets(b),所以b[]的东西被改变了。当你使用gets(b)的时候,由于在C语言中向函数传递数组时不是通过值传递(我猜你还没有学指针,如果你学了,那么传递数组就是传递数组首元素的指针),函数内对数组的修改对函数外仍然有效,所以gets改变了b[]里的内容。
第二个问题,因为在这个程序里没有进行错误检测,所以就没有错误提示,但只有输入的前10个字符被存入了数组中。追问诶,不好意思还不是很明白第一个问题,get(b)取走的是数组a里溢出的字符么?还有a[i]='\0';这语句是什么作用呢?谢谢!o(>_<)o ~~追答a[i]='\0'的作用是标记字符串a结束。gets(b)取走的是上面scanf没有取走的用户输入,因为上面的scanf只取走了"the flower",剩下的" is red"保存在输入缓冲区内,当你调用gets是,gets发现输入缓冲区内还有字符,于是直接取走输入缓冲区内的字符而不提示用户输入。(同时把用户输入的回车,即'\n',也取走,但不存入b里面)
全部回答
首先a[]里面的值是the flower,长度正好是10个,所以后面的字符全部传给了b“ is red”(is red前面有一个空格),报错是因为超过了界限才会报错,如果你访问a[20]的话就会报错,scanf(“%c”)是按单个字符来输入的,所以不会报错
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
招商银行工资卡可以买朝朝盈不
我在淘宝上买东西为什么会发验证码到别人的手
导航地图怎么下载?下载到内存卡的那种,插到
已知x²+3x+1=0,求(1)x²+二分之一 (
广西桂林第三大水库是什么?
绍宾电器这个地址在什么地方,我要处理点事
单选题十九世纪照相技术的发明,直接导致了电
外地户口如何迁入北京
涡街流量计流量:测量范围上限是多少
真三国无双5人物休息姿势怎么做
三国小镇什么人物好,4399三国小镇斩杀魔化吕
在putty进入linux后怎么有″$″符号
公主恋人ova无修的直接云播的我不高兴网盘。
一艘航母要多久才能建好
填空,组成成语,要求填入的字前后互为反义词
推荐资讯
豪都蒙餐这个地址在什么地方,我要处理点事
广州哪里有理发用品和理发工具批发?很急,谢
男生纹理烫问题 1.头发效果会很卷
滕州一中2016年高一期中原始成绩
挨字的多音字怎么组词,挨字的多音字组词
愚人节红包祝福,愚人节要红包短信大全
敬求墨宝的意思是啥
在函数y=-3x+5的图象上有A(1,y1)、B(-1,
请问皮箱的锁放在大巴车上以后,密码自动改了
鑫源大厦我想知道这个在什么地方
等腰梯形的一腰长与中位线相等,梯形的周长为
赵庄街1号院地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?