C语言中,可以用gets函数来接收输入的字符串(包含空格)。
成都创新互联是一家专注于网站设计、做网站与策划设计,通川网站建设哪家好?成都创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:通川等地区。通川做网站价格咨询:13518219792
格式:gets(字符数组名);
功能:gets函数用于将输入的字符串内容存放到指定的字符数组中,输入结尾的换行符'\n'被换成'\0'存储在该数组中。
举例说明如下:
char str[20]; // 定义一个字符数组,大小为20个字节
gets(str); // 将用户输入的字符串(可以包含空格)存储到字符数组str中,以回车结束输入
printf("%s", str); // 输出用户输入的字符串(包含空格)
注:使用gets函数时,需将头文件#includestdio.h包含到源文件中。
要输入带空格的字符串,要用到一个格式字符:%[] -- 一个字符集。
“%[]”的作用是扫描字符集合:
例如:scanf(“%[^\n]”,str);
具体作用是:如果输入的字符属于方括号内字符串中某个字符,那么就提取该字符;如果一经发现不属于就结束提取。该方法会自动加上一个'\0'到已经提取的字符后面。
#include stdio.h
int main()
{
char str[81];
printf("Please input a string:\n");
scanf("%[^\n]",str);
printf("The string is:\n%s\n",str);
return 0;
}
扩展资料:
字符串函数应用:
1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn。
例:concat(‘11’,'aa’)='11aa’。
2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:copy(‘abdag’,2,3)=’bda’。
3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’。
4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置。
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’。
5. 求字符串长度 length(s) 例:length(‘12abc’)=5。
在ASP中 求字符串长度用 len(s)例: len("abc12")=5。
参考资料:
百度百科-扫描集
在scanf()语句中,空格有特殊作用:
一般在编写程序时,不提倡写入空格,因为可能会出现难以预知的变化。因为它规定:
(1)当输入的是数字时,比如scanf("%d",a);这时你输入空格是当作没有输入的,如输入“(空格)(空格)(空格)(回车)“,程序还在那里等着呢!可是如果你如果输入”(空格)(空格)123(空格)(回车)“则程序把123赋值给了a,执行的是a=123——直接把空格给忽视啦!!。
所以,这时的空格基本上是等于白按。
(2)如果你在%d前面加上一个空格,如scanf("(空格)%d",a);,跟第(1)项的内容还是一样的。
(3)当输入的是字符串时,比如scanf("%c",a);这时你输入的所有内容都是有效的,但它只取第一个字符。如你输入”abc(回车)",则a="a",后面的字符也等于没用上。如果你按的是“(空格)abc(回车)”,则a=(空格)——还是第一个空格!!如果按“(空格)(空格)(空格)(回车)”则a=(空格)——因为第一个字符是空格。
(4)如果你在%c前面加上一个空格,如scanf("(空格)%c",a);,这时出现了变化!!它直接把前面的空格忽视,你如果这时按“abc(空格)(回车)”,则仍然a="a",可是你这时如果按(空格)abc(回车)”,则a=“a"——最前面的那一个空格被忽视了!!最可恨的是当你按“(空格)(空格)(空格)(回车)”时,程序还在等待中,它把你按的空格全部忽视了。
分析到这儿(应该说还没有分析完全),你应该知道空格的作用了,所以,出现了你发出来的上图的情况,你自己分析原因吧!
为避免出错,一般不要加入空格。
scanf函数族在用%c接受输入时要接收空格和回车。%s时接受空格。
getchar函数族接受所有字符包括回车。