请问最上面的b数组有多少个元素那个a数组不是之后被赋值了一个空字符吗,为什么之后输出没有那个空字符

 我来答
splashchaos
推荐于2016-09-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3662万
展开全部
① 答案B是正确的;
② for循环里面scanf,i的变化范围是0~9(共10个),当i = 10时,退出循环;这时a里面的有效值是a[0]~a[9],这时再a[i=10]='\0',就是在a的第11位置上放入了一个字符'\0',这个字符叫结尾符(terminating null character),它只是告诉系统这个字符串到此为止,而它本身不算在字符串的长度里面。
③ 而你输入了Fig flow is red.这是18个字符(包括空格和.)。a只取了头10个字符,那么剩余的字符被留在系统的键盘缓冲区中,这时后面再一条gets语句,就把剩余的都读到字符串(字符数组b)中了,注意:gets会自带在读取结束后在字符串的末尾添加一个'\0' (而你输入结束时,按了一个回车键,其实这个也是一个字符,'\n',这个字符被留在键盘缓冲区中,gets没有读取)
④ 这样字符串(数组)a和b共同完成了对你输入的Fig flower is red. 这个字符串的读取工作。上面提到的字符'\0','\n'都属于非显示字符,因此你printf的时候不会出现(如果字符串中有'\n',虽然不会显示,但会让输出另起一行,这也正是你printf的格式控制串中\n的原因)。
⑤ 题外话,gets虽然不会读取'\n',但另一个函数fgets则会,这也是二者的区别之一~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式