c语言,ASCII表上“NULL”、“space”、"回车"、“\0”这几个字符怎么区别啊?那个是字符串结束字符?

为什么scanf函数只读到字符串的空格键为止,而printf函数却一直输出到最后;比如:输入同样的字符串abcasdcnddasdsascanf只读到abc;而对于pri... 为什么scanf函数只读到字符串的空格键为止,而printf函数却一直输出到最后;比如:输入同样的字符串 abc asdcnd dasdsascanf只读到abc;而对于printf函数会把abc asdcnd dasdsa输出;请问这是为什么?它们区分字符串结束标志有什么区别吗?#include <stdio.h>int main(){ char string[100]={}; scanf("%s",string); printf("NO.1 %s\n",string); gets(string); printf("NO.2 %s\n",string); printf("C=%c,d=%d\n",string[10],string[10]); printf("C=%c,d=%d\n",string[0],string[0]); printf("C=%c,d=%d\n",string[5],string[5]); return 0;}结果:如下图所示。 展开
 我来答
Yuqi_Tan

2020-05-10 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3636万
展开全部
你说的问题出现在输入函数上。
因为用scanf()输入时,默认用空格作为输入分隔符。所以,当用scanf输入字符串时,碰到空格,就停止读入。因此,它不能用于含有空格的字符串的输入。
用gets()输入时,就不存在这个问题,它把回车前的所有字符(包括空格)都作为字符串的内容了。
使用时要特别注意这一点。
匿名用户
2020-03-03
展开全部
scanf函数只读到字符串的空格键和回车为止, 其实也可以读到你指定的字符中止, 只是不是用s%

也可以用gets函数读取输入, 到回车为止, 可以读入空格
输出字符串以'\0'结尾, 不是以空格或回车结尾
更多追问追答
追问
嗯,谢谢!我大概清楚了,scanf("%s",string);读到分隔符为止,封隔符可以是空格、回车、Tap键等。而printf输出到\0为止。另外,回车键的键码为“\n”=10,空格的键码=32,所以输出的最后一个字符是gets函数后面自动添加。T-T
追答
scanf("%[^\n]", str)  //读取到回车为止, 可以读取空格
scanf("%[^#]", str) //读取到'#'为止, 空格,回车都可读取, 也就是读取多行字符串
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8b58de0
2020-03-03 · TA获得超过945个赞
知道小有建树答主
回答量:1079
采纳率:83%
帮助的人:348万
展开全部
scanf与控制字符串有关,并不总是以空格作为结束,比如scanf("%s,%s",a,b);就是以逗号作为分隔。
而printf就是以\0字符串结束符为结束标志。
这些东西是要硬记和理解的,具体要好好查各函数的使用说明。
追问
嗯,谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式