c语言 scanf()函数如何读入一个带空格的字符串

时间:2021-12-16 01:47:33
scanf()函数如何读入一个带空格的字符串
char a[20]={0};
printf("请输入: ");
scanf("%s[^\n]",a); 
printf("%\ns",a);
system("pause");
运行:
请输入:I love you
I请按任意键继续…
希望的运行结果是:
请输入:I love you
I love you
请按任意键继续…

8 个解决方案

#1


scanf("%[^\n]%*c",a);%*c是用来吸收末尾的'\n'~~这样就可以了~~

#2


还是不行啊!
如果是:scanf("%[^\n]%*c",a);
运行结果是:
请按任意键继续…
如果改为:scanf("%s%[^\n]%*c",a);
运行结果仍然是:
请输入:I love you
 I请按任意键继续…

#3


scanf函数好象本身就是把空格作为数据分隔符
想读入带空格的字符串,得用如gets()之类的函数

#4


建议暂时使用gets()函数来完成功能
等入门后学习使用fgets()函数来完成

gets(char *string);
fgets(char * s, int n,FILE *stream);



char a[20]={0};
printf("请输入: ");
gets(a);
printf("%s",a);
system("pause");

#5


三楼正解

引用 3 楼 fjjfxz 的回复:
scanf函数好象本身就是把空格作为数据分隔符
想读入带空格的字符串,得用如gets()之类的函数

#6


还不快快用上键盘事件。。。

#7


fgets(a,20,stdin);

#8


fgets(a,20,stdin)函数还是不行!

#1


scanf("%[^\n]%*c",a);%*c是用来吸收末尾的'\n'~~这样就可以了~~

#2


还是不行啊!
如果是:scanf("%[^\n]%*c",a);
运行结果是:
请按任意键继续…
如果改为:scanf("%s%[^\n]%*c",a);
运行结果仍然是:
请输入:I love you
 I请按任意键继续…

#3


scanf函数好象本身就是把空格作为数据分隔符
想读入带空格的字符串,得用如gets()之类的函数

#4


建议暂时使用gets()函数来完成功能
等入门后学习使用fgets()函数来完成

gets(char *string);
fgets(char * s, int n,FILE *stream);



char a[20]={0};
printf("请输入: ");
gets(a);
printf("%s",a);
system("pause");

#5


三楼正解

引用 3 楼 fjjfxz 的回复:
scanf函数好象本身就是把空格作为数据分隔符
想读入带空格的字符串,得用如gets()之类的函数

#6


还不快快用上键盘事件。。。

#7


fgets(a,20,stdin);

#8


fgets(a,20,stdin)函数还是不行!