从空间字符输入读取字符串?我正在使用Ubuntu,我也使用Geany和CodeBlock作为我的IDE。我正在尝试做的是读取一个字符串(如"Barack Obama")并将其放在一个变量中:#include <stdio.h>int main(void){
char name[100];
printf("Enter your name: ");
scanf("%s", name);
printf("Your Name is: %s", name);
return 0;}输出:Enter your name: Barack Obama
Your Name is: Barack如何让程序读取整个名称?
3 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
使用:
fgets (name, 100, stdin);
100
是缓冲区的最大长度。您应该根据需要进行调整。
使用:
scanf ("%[^\n]%*c", name);
这[]
是扫描集字符。[^\n]
告诉我,虽然输入不是换行符('\n'
)接受输入。然后使用%*c
它从输入缓冲区中读取换行符(未读取),并*
指示此读取输入被丢弃(赋值抑制),因为您不需要它,并且缓冲区中的这个换行符不会创建您可能采取的下一个输入的任何问题。
注意你也可以使用gets
....
切勿使用
gets()
。因为在不事先知道数据的情况下不可能分辨出get()将读取多少个字符,并且因为gets()
将继续存储超过缓冲区末尾的字符,所以使用它是非常危险的。它已被用来打破计算机安全。请fgets()
改用。
慕后森
TA贡献1802条经验 获得超5个赞
下面是一个如何使用该fgets
函数获取包含空格的输入的示例。
#include <stdio.h>int main(){ char name[100]; printf("Enter your name: "); fgets(name, 100, stdin); printf("Your Name is: %s", name); return 0;}
- 3 回答
- 0 关注
- 535 浏览
添加回答
举报
0/150
提交
取消