永发信息网

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

答案:2  悬赏:80  手机版
解决时间 2021-03-22 00:04
  • 提问者网友:呐年旧曙光
  • 2021-03-21 02:50
求助有关C语言gets()语句的问题
最佳答案
  • 五星知识达人网友:老鼠爱大米
  • 2021-03-21 03:49
因为你用了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里面)
全部回答
  • 1楼网友:我住北渡口
  • 2021-03-21 04:12
首先a[]里面的值是the flower,长度正好是10个,所以后面的字符全部传给了b“ is red”(is red前面有一个空格),报错是因为超过了界限才会报错,如果你访问a[20]的话就会报错,scanf(“%c”)是按单个字符来输入的,所以不会报错
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯