【WD】C语言scanf:读取从键盘输入的数据 总结

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2022-7-11

关于字符串,后续章节我们还会专门讲解,这里只要求大家会模仿,不要彻底理解,也没法彻底理解。

最后需要注意的一点是,scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串,请看下面的例子:
#include
int main()
{
char author[30], lang[30], url[30];
scanf("%s %s", author, lang);
printf("author:%s \nlang: %s\n", author, lang);
scanf("%s", url);
printf("url: %s\n", url);
return 0;
}
运行示例:
YanChangSheng C-Language↙
author:YanChangSheng
lang: C-Language

本帖含有隐藏内容,请您 回复 后查看
' target='_blank'>
本帖含有隐藏内容,请您 回复 后查看
[/reply]
本帖含有隐藏内容,请您 回复 后查看

url:
本帖含有隐藏内容,请您 回复 后查看
' target='_blank'>
本帖含有隐藏内容,请您 回复 后查看
[/reply]

对于第一个 scanf(),它将空格前边的字符串赋值给 author,将空格后边的字符串赋值给 lang;很显然,第一个字符串遇到空格就结束了,第二个字符串到了本行的末尾结束了。

或许第二个 scanf() 更能说明问题,我们输入了两个网址,但是 scanf() 只读取了一个,就是因为这两个网址以空格为分隔,scanf() 遇到空格就认为字符串结束了,不再继续读取了。
scanf() 格式控制符汇总
格式控制符 说明
%c 读取一个单一的字符
%hd、%d、%ld 读取一个十进制整数,并分别赋值给 short、int、long 类型
%ho、%o、%lo 读取一个八进制整数(可带前缀也可不带),并分别赋值给 short、int、long 类型
%hx、%x、%lx 读取一个十六进制整数(可带前缀也可不带),并分别赋值给 short、int、long 类型
%hu、%u、%lu 读取一个无符号整数,并分别赋值给 unsigned short、unsigned int、unsigned long 类型
%f、%lf 读取一个十进制形式的小数,并分别赋值给 float、double 类型
%e、%le 读取一个指数形式的小数,并分别赋值给 float、double 类型
%g、%lg 既可以读取一个十进制形式的小数,也可以读取一个指数形式的小数,并分别赋值给 float、double 类型
%s 读取一个字符串(以空白符为结束)

#【WD】C语言scanf:读取从键盘输入的数 中上#
#【WD】C语言scanf:读取从键盘输入的数据 中上#
#【WD】C语言scanf:读取从键盘输入的数据 上#

沙发
幻愿滑稽 2022-7-11
自古一楼是楼主[滑稽][玫瑰]
板凳
玖月๑ 2022-8-9
奖励结算,当前结算等级:1;少侠辛苦了。

评论

登录后才可发表内容
  • 主题

    765

  • 帖子

    1032

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0948s Mem:2083Kb