scanf("%*s")

scanf("%*s"),其中*是表示输入的"以空格符结束的字符串"不传入任何变量,也就是舍弃的意思,因为这里sanf函数读入的是不正确的数据,当然就需要舍弃了,以免影响下一次的读入

如果我没猜错的话 楼主现在正在看C Primer Plus(第五版)吧
因为我依稀记得这个代码出自这里

解释:scanf("%*s")
首先我们跳到代码:(status = scanf("%d", &code)) != 1 这是判断输入是否正常
想必这个楼主应该理解了吧

再看
if (status != 1)
scanf("%*s");
当status不是1 说明输入的内容不是和变量code的类型一致
那么这是我们需要将输入的错误信息读取掉 否则scanf函数会把错误信息保留 影响下次的读入

实践了一下,如下:

#include <iostream>
using namespace std;

int main(){
	int i,j,k,status;
	status=scanf("%d %d",&i,&j);
	cout<<i<<" "<<j<<" "<<status;
	return 0;
} 
/*
case 1:
	input : 3 4
	output : 3 4 2
case 2:
	input : 3 ]
	output : 3 0 1
case 3:
	input : ` \
	output : 0 0 0	
*/ 


好了 回归主题:先看scanf("%s") 这是读入一个字符串 以空格结束 -->解释了为什么"来跳至下一空白字符"

星号*的作用就是表示读入字符串的宽度 这里没用具体的数字就是表明需要读入的字符串的宽度是不确定的
 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值