搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 数据流的问题求解决
标题:
数据流的问题求解决
只看楼主
美丽的舞者
等 级:
新手上路
帖 子:22
专家分:0
注 册:2018-5-21
结帖率:
66.67%
楼主
已结贴
√
问题点数:8 回复次数:15
数据流的问题求解决
#include<stdio.h>
int main(void)
{
int a;
char r[20];
if(1== scanf_s(''%d",&a)
a = 1;
scanf_s("%s",&r);
printf("%d,%s",a,s);
}
第一次输入"汉字"
第二次输入"英语"
输出的结果是a=1 s=汉字
我的疑问是怎么可以把第一次输错的数据从数据流中删除?
搜索更多相关主题的帖子:
数据
int
输入
汉字
英语
2018-05-23 20:31
美丽的舞者
等 级:
新手上路
帖 子:22
专家分:0
注 册:2018-5-21
第
2
楼
得分:0
2018-05-23 20:56
nosnoy
来 自:mcu
等 级:
贵宾
威 望:
14
帖 子:540
专家分:1158
注 册:2016-9-17
第
3
楼
得分:4
回复 2楼 美丽的舞者
你确定你代码运行后值是对的吗
穷举是最暴力的美学
2018-05-23 21:02
美丽的舞者
等 级:
新手上路
帖 子:22
专家分:0
注 册:2018-5-21
第
4
楼
得分:0
回复 3楼 nosnoy
恩~他直接赋值给r
2018-05-23 21:22
nosnoy
来 自:mcu
等 级:
贵宾
威 望:
14
帖 子:540
专家分:1158
注 册:2016-9-17
第
5
楼
得分:0
回复 4楼 美丽的舞者
#include<stdio.h>
int main(void)
{
int a;
char r[20];
if(1== scanf_s(''%d",&a)//少一个)
a = 1;
scanf_s("%s",&r);
printf("%d,%s",a,s);
}
%s输出时会读取到第一个'\0'截止
穷举是最暴力的美学
2018-05-23 21:49
nosnoy
来 自:mcu
等 级:
贵宾
威 望:
14
帖 子:540
专家分:1158
注 册:2016-9-17
第
6
楼
得分:0
回复 4楼 美丽的舞者
还有你输入‘汉字’后直接回车的话不会有你输入英语的机会吧
穷举是最暴力的美学
2018-05-23 21:51
美丽的舞者
等 级:
新手上路
帖 子:22
专家分:0
注 册:2018-5-21
第
7
楼
得分:0
回复 5楼 nosnoy
\0后面的数据怎么清除?不然留在数据流中会妨碍下次输入
2018-05-23 22:35
lin5161678
等 级:
贵宾
威 望:
45
帖 子:1136
专家分:3729
注 册:2011-12-3
第
8
楼
得分:4
1是垃圾值
至于清除前面的无效输入
这里可以用
scanf("%*s");
https://zh.
2018-05-23 23:06
nosnoy
来 自:mcu
等 级:
贵宾
威 望:
14
帖 子:540
专家分:1158
注 册:2016-9-17
第
9
楼
得分:0
回复 7楼 美丽的舞者
%s做输入的时候,是遇到\n才截止的;所以你的缓存区是空的;不会影响下次输入的
穷举是最暴力的美学
2018-05-24 09:05
lin5161678
等 级:
贵宾
威 望:
45
帖 子:1136
专家分:3729
注 册:2011-12-3
第
10
楼
得分:0
回复 9楼 nosnoy
第一次输入 汉字
对应scanf %d
%d不处理这样的字符
scanf 直接跳过
到下一个scanf 这里的 %s 读取到 汉字
https://zh.
2018-05-24 09:40
16
1/2页
1
2
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-487211-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.981323 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved