| |
可用我们熟悉的scanf函数加上%s格式说明符来读取字符串。例如:
char address[10];
scanf("%s",address);
scanf函数的问题是,一旦遇到空白符(包括空格、制表符、回车符、样式缩进和换行符),就将终止输入。因此,如果在中断输入如下的文本行:
则只有字符串“NEW”读入address之中,由于NEW后面有空格,使字符串的读取终止。
Scanf函数自动终止字符串,因此字符串数组应足够大,以便能保存所输入的字符串再加上一个空字符。注意,与前面介绍的scanf调用不同的是,在字符数组中,变量名的前面不需要加&符号。
如果要读取整行的字符“NEW YORK”,则要使用两个大小合适的字符数组。也就是说,语句:
char adr1[5],adr2[5];
scanf("%s %s",adr1,adr2);
可以把文本
中的字符串“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。