main(){char p[][4]={"ABC","DEF","GHI"};int i;for(i=0;i<3;i++)puts(p[i]);输出什么,为什么要换行? 5

 我来答
百度网友fd9b9a0
2012-09-18
知道答主
回答量:18
采纳率:0%
帮助的人:10.2万
展开全部

输出这个啊

正确啊,如果换成printf就是没有换行,puts这个是自动换行的

scanf函数和getchar函数在输入时是读取到“回车”就结束的,而回车符留在了输入流缓冲区,当下一次输入仍用scanf或者getchar读入一个字符的时候,则会把缓冲区的回车符读取从而导致结果不正确,但若第二次是用scanf输入一个数字的时候,scanf则会跳过空白字符,可以正常输入。
    在用scanf读入字符串如scanf("%s",str)时,在输入的过程中,如字符串内有空格如hello world,则只能读取到hello,因为scanf使用%s输入方式时,认为遇到空格、TAB、回车键则认为输入结束,因而只能读取无空格的字符串。
    第一:要注意不同的函数是否接受空格符、是否舍弃最后的回车符的问题!
读取字符时:
    scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);
    getchar()以Enter结束输入,也不会舍弃最后的回车符;
读取字符串时:
    scanf()以Space、Enter、Tab结束一次输入,不舍弃最后的回车符。
    gets()以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车!
puts函数的功能就是输出字符串在最后面加上一个换行符号,即自动换行。

  
追问
想问下 '\0‘键和 ENTER键有什么关联
追答
'0'是字符串的结束标志,ASCII就等于0。
而Enter的键值为'\r',c语言中输出'\n'含义为 换行,将当前位置移到下一行开头,输出'\r'含义为回车将当前位置移到本行开头 。 也许你还会问为什么按下Enter是换行 而不是跳到本行开头 那你应该首先想清楚当你按下Enter的时候 是输出'\r',还是获得'\r'?显然是获得'\r',电脑先得到你输入的'\r',然后再输出'\n',因此实现了换行 。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式