凌阳教育专注嵌入式教育14年,良心教育,有担当,有诚信,值得信赖的教育品牌,欢迎访问官网http://www.sunplusedu.com

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

上一篇 / 下一篇  2016-04-18 14:41:54 / 个人分类: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


TAG: 字符串

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar