| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 849 人关注过本帖
标题:关于scanf的一点疑惑
只看楼主 加入收藏
TBEIZ
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-12-21
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:11 
关于scanf的一点疑惑
1.#include <stdio.h>   
2.main()   
3.{   
4.    int a, b;   
5.    float x, y;   
6.    char c1, c2;   
7.    scanf("a=%d b=%d", &a, &b);   
8.    scanf("%f %e", &x, &y);     
9.    scanf("%c %c", &c1, &c2);         
10.    printf("a=%d, b=%d, x=%f, y=%f, c1=%c, c2=%c\n", a, b, x, y, c1, c2);   
11.}
为什么我输入1 2 1.1 2.2然后回车,程序就开始打印了呢?c1,c2我还没赋值呢?明天上机考试,急。   


搜索更多相关主题的帖子: include 
2011-01-06 15:26
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:3 
这个就是缓冲区问题

小代码,大智慧
2011-01-06 15:31
TBEIZ
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-12-21
收藏
得分:0 
回复 2楼 点线面
帮我说说呗,我认为输入回车后,就相当于一个空白字符啊,应该要接着输字符的啊
2011-01-06 15:34
li_danwang
Rank: 4
来 自:鄂州
等 级:业余侠客
帖 子:112
专家分:203
注 册:2010-11-12
收藏
得分:3 
每次sacnf函数后面加个  getchar();

没事来C一下...   
2011-01-06 15:41
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
程序代码:
#include <stdio.h>   
int main()   
{   
    int a, b;   
    float x, y;   
    char c1, c2,c;   
    scanf("%d%d", &a, &b);   
    scanf("%f%e", &x, &y);   
    while ( (c=getchar()) != '\n' && c != EOF );
    scanf("%c", &c1 );
    while ( (c=getchar()) != '\n' && c != EOF );
    scanf("%c",  &c2);   
    printf("a=%d, b=%d, x=%f, y=%f, c1=%c, c2=%c\n", a, b, x, y, c1, c2);
    scanf("%*s");
    return 0;
}
解决方法就是输入一个,回车,输入一个,再回车再,类似类推

[ 本帖最后由 点线面 于 2011-1-6 15:49 编辑 ]

小代码,大智慧
2011-01-06 15:48
九品绅士
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:59
专家分:199
注 册:2010-3-26
收藏
得分:3 
scanf("a=%d b=%d", &a, &b);这条语句有误,后面的字符全乱了
2011-01-06 15:56
xufan123
Rank: 5Rank: 5
等 级:职业侠客
帖 子:226
专家分:318
注 册:2010-11-15
收藏
得分:3 
格式输出写规范点就没事了 最后就是那个 输入字符前 前个语句加上 getch();就OK
2011-01-06 16:06
TBEIZ
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-12-21
收藏
得分:0 
谢谢大家了,我懂了
2011-01-06 16:11
shaohani
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2010-12-1
收藏
得分:0 
程序没有问题,是你输入的问题,普通字符(包括转义字符)要原样输入,比如: scanf("a=%d b=%d", &a, &b);  程序中这样定义,正确输入应该是:a=1 b=2;另外,空格也是字符型,所以  scanf("%c %c", &c1, &c2);   中"%c %c"中间要按情况看是否要加空格,不能随便加。
比如你想输入1 2 1.1 1.2 a b,则程序的正确输入方法应该是:
a=1 b=2 1.1 1.2ab<回车>   

2011-01-06 19:43
z8869113
Rank: 2
等 级:论坛游民
帖 子:44
专家分:14
注 册:2010-12-14
收藏
得分:0 
支持九楼!
2011-01-06 22:02
快速回复:关于scanf的一点疑惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024581 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved