c语言中如何用scanf读取一个带有空格的string

比如输入的string为
空格空格空格空格空格空格空格Harry空格Potter

题目要求用scanf读取这一行,无视前面的空格,并保留中间的空格,输出值为
Harry空格Potter

应该怎么写?
可以用getchar()消掉前面的空格吗

要输入带空格的字符串,要用到一个格式字符:%[] --> 一个字符集。

“%[]”的作用是扫描字符集合:

例如: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。

参考资料:

百度百科-扫描集

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-31
scanf默认回车和空格是输入不同组之间的间隔和结束符号,所以输入带空格的字符串是不可以的,建议用gets来完成这个功能,gets是以回车作为结束的:
char str[40]; gets(str);
第2个回答  推荐于2017-12-16
本来就不是专职用来读取字符串的,建议你需要读取带字符串的数据,可以用 头的
使用char * gets(char *)读入 使用 char *puts(char *) 输出
较为安全的可以使用:
使用char * fgets(char *,int,stdin)读入 使用 char * fputs(char *,int,stdout) 输出

scanf()就是到空格停止读取但是不丢弃数据本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网