VS中scanf_s使用出现的问题

1 篇文章 0 订阅
关于vs中对于scanf_s修改发现的问题,尤其是使用scanf_s读取字符时发现的问题。
首先,对于scanf_s读取字符时的格式,这里要明确说一点,scanf_s不是scanf其使用格式是不相同的,读取字符时的使用格式为:scanf_s("%c",变量地址,读取字符长度上限);,也就是说当我们按照scanf的方法使用scanf_s时可能会出现读取参数不足的问题。
其次就是经过使用发现,当我们同时使用多个scanf_s时会发现其会跳过多个scanf_s,这是因为在每一个scanf_s后都会产生一个莫名其妙的回车(个人感觉好废的东西,还会有不必要的麻烦),这时我们只需要加入一个getchar();,用以吞掉这个没用的回车,例如下图这样:
	scanf_s("%d", &T->n);
	getchar();
	for (i = 0; i < T->n; i++) {
		fflush(stdin);
		printf("请输入节点名称:");
		scanf_s("%c", &T->arr[i].data, 5);
		getchar();
		printf("请输入节点权值:");
		scanf_s("%d", &T->arr[i].weight);
		getchar();
		T->arr[i].parent = T->arr[i].lchild = T->arr[i].rchild = -1;
	}
这样即可解决跳过键入的问题。
最后就是要每一个scanf_s都加,我人傻了,不然会吞掉你输入的字符??????不知道vs要搞什么,反正自己注意一下就行了,解决方法简单,但是挺麻烦的。
  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值