在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2586|回复: 1

[资料] 利用scanf函数从终端读取字符串

[复制链接]
发表于 2016-4-18 14:50:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

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

char address[10];

scanf("%s",address);

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

NEW  YORK

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

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

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

char adr1[5],adr2[5];

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

可以把文本

NEW  YORK

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

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

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

main()

{

       charword1[40],word2[40],word3[40],word4[40];

       printf("Entertext:\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


发表于 2022-1-5 11:42:30 | 显示全部楼层
gets怎么用?大哥
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-22 20:14 , Processed in 0.016499 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表