c语言 scanf 不换行符,用scanf()函数读取空白字符,回车符\r换行符\n等

C语言中scanf()函数是从标准输入流stdin中读取信息的,很多时候调用scanf()函数却得不到想要的信息,可以从这方便考虑解决问题。

fflush(stdin);

是个不错的方法。

想要用scanf()函数读入空白字符,回车符和换行符这些字符,就需要提到scanf()函数的格式说明符:

转换字符(就是%后跟的部分)

a 读浮点值(仅适用于 C99)

A 读浮点值(仅适用于 C99)

c 读单字符

d 读十进制整数

i 读十进制、八进制、十六进制整数

e 读浮点数

E 读浮点数

f 读浮点数

F 读浮点数(仅适用于 C99)

g 读浮点数

G 读浮点数

o 读八进制数

s 读字符串

x 读十六进制数

X 读十六进制数

p 读指针值

n 至此已读入值的等价字符数

u 读无符号十进制整数

[ ] 扫描字符集合

% 读 % 符号(百分号)

附加格式说明字符表修饰符说明

L/l 长度修饰符 输入"长"数据

h 长度修饰符 输入"短"数据

W 整型常数 指定输入数据所占宽度

* 表示本输入项在读入后不赋值给相应的变量

上面提到的 扫描字符集合 []就是关键,它使得读入空白字符成为可能。如下所示:

#include

#include

int main()

{

char

str1[80], str2[80];

memset(str1, 0, 80);

memset(str2, 0,

80); //这个地方可以设不同的值- -,显示的时候很有趣

scanf("%[^\n]%*5c%[^\n]", str1, str2);

printf("%s\n%s\n", str1, str2);

return

0;

}

上面代码使得空格,制表符作为输入成为可能,其中 %[^\n] 表示除了换行符\n之外的字符都接收。

如想要接收换行符\n作为输入,只需要在扫描字符集中添加\n即可。

注意:

回车符是特殊字符,在scanf("%[^\n]", str)之后需要增加scanf("%c", newline),消除回车符。否则,只要接收到一个回车符scanf会不停止运行。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值