为了账号安全,请及时绑定邮箱和手机立即绑定

在ASCII表上“NULL”、“space”、"回车"、“\0”这几个字符怎么区别开?

在ASCII表上“NULL”、“space”、"回车"、“\0”这几个字符怎么区别开?

C PHP
www说 2021-12-01 07:07:30
为什么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;}结果:如下图所示。
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

你说的问题出现在输入函数上。
因为用scanf()输入时,默认用空格作为输入分隔符。所以,当用scanf输入字符串时,碰到空格,就停止读入。因此,它不能用于含有空格的字符串的输入。
用gets()输入时,就不存在这个问题,它把回车前的所有字符(包括空格)都作为字符串的内容了。
使用时要特别注意这一点。

查看完整回答
反对 回复 2021-12-07
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

scanf函数只读到字符串的空格键和回车为止, 其实也可以读到你指定的字符中止, 只是不是用s%
也可以用gets函数读取输入, 到回车为止, 可以读入空格
输出字符串以'\0'结尾, 不是以空格或回车结尾

查看完整回答
反对 回复 2021-12-07
  • 2 回答
  • 0 关注
  • 336 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信