VS中scanf_s使用出现的问题

c 同时被 2 个专栏收录
1 篇文章 0 订阅
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要搞什么,反正自己注意一下就行了,解决方法简单,但是挺麻烦的。
  • 4
    点赞
  • 0
    评论
  • 2
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

(๑•̀ㅂ•́)و✧

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值