凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

利用scanf函数从终端读取字符串

已有 946 次阅读| 2016-4-18 14:41 |个人分类:C语言

可用我们熟悉的scanf函数加上%s格式说明符来读取字符串。例如:

char address[10];

scanf("%s",address);

scanf函数的问题是,一旦遇到空白符(包括空格、制表符、回车符、样式缩进和换行符),就将终止输入。因此,如果在中断输入如下的文本行:

NEW YORK

则只有字符串“NEW”读入address之中,由于NEW后面有空格,使字符串的读取终止。

Scanf函数自动终止字符串,因此字符串数组应足够大,以便能保存所输入的字符串再加上一个空字符。注意,与前面介绍的scanf调用不同的是,在字符数组中,变量名的前面不需要加&符号。

如果要读取整行的字符“NEW YORK”,则要使用两个大小合适的字符数组。也就是说,语句:

char adr1[5],adr2[5];

scanf("%s %s",adr1,adr2);

可以把文本

NEW YORK

中的字符串“NEW”赋给adr1,而“YORK”赋给了adr2.

示例 请编写一个程序,使用scanf函数从终端读取一系列字符串。

程序读取4个字符串,并把它们显示在屏幕上。注意,“Oxford Road”被看做是两个字符串,而“Oxford-Road”则看做一个字符串。

main()

{

       char word1[40],word2[40],word3[40],word4[40];

       printf("Enter text:\n");

       scanf("%s %s",word1,word2);

       scanf("%s",word3);

       scanf("%s",word4);

       printf("\n");

       printf("word1=%s\nword2=%s\n",word1,word2);

       printf("word3=%s\nword4=%s\n",word3,word4);

}

也可以在scanf语句中使用%ws格式说明符来制定字段的宽度,用于从输入字符串中读取指定数量的字符。例如:

scanf(“%ws”,man);

这里可能发生以下两种情况:

(1)       宽度w等于和大于键所键入的字符数。整个字符串都保存在字符串变量之中。

(2)       宽度w小于所键入的字符数。多余的字符将被截除,不被读取。

请看下面语句:

char name[10];

scanf("%5s",name);

输入字符串RAM后,将按如下形式存储;

R

A

M

\0

?

?

?

?

?

输入字符串KRISH则按如下形式存储:

K

R

I

S

H

\0

?

?

?

凌阳教育,全国唯一一家原厂式嵌入式培训机构,专业从事嵌入式人才培训13年,最近新开课程信息安全工程师培训,想了解更多嵌入式资料下载或者是凌阳教育的动态,请访问凌阳教育官网www.sunplusedu.com


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 20:24 , Processed in 0.015146 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部