| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10550 人关注过本帖
标题:[求助]使用scanf时,char型的正确输入方法应该是如何?
取消只看楼主 加入收藏
lg_mic
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-9-18
收藏
 问题点数:0 回复次数:3 
[求助]使用scanf时,char型的正确输入方法应该是如何?

首先是第一段代码

#include<stdio.h>
#include<stdlib.h>
main()
{
char c1,c2;
scanf("%c,%c",&c1,&c2);
printf("c1='%c',c2='%c'\n",c1,c2);
system("pause");
}

建立c1,c2为字符型变量,输入c1,c2的值后输出c1,c2。
输入:
a,b
输出:
c1='a',c2='b'
以上没有问题。
然后我修改了一下代码
#include<stdio.h>
#include<stdlib.h>
main()
{
int a,b;
char c1,c2;
scanf("%d,%d",&a,&b);
scanf("%c,%c",&c1,&c2);
printf("c1='%c',c2='%c'\n",c1,c2);
system("pause");
}
建立了两个整型变量 a,b。并先用scanf输入a,b的值。然后再输入c1,c2的值。
输入:
12,34
a,b
输出:
c1='
',c2='f'
出问题了……这应该是程序把换行符\n当成了c1的值。我刚开始以为这里应该断开一下,于是又改了下代码。
#include<stdio.h>
#include<stdlib.h>
main()
{
int a,b;
char c1,c2;
scanf("%d,%d",&a,&b);
printf("1\n");
scanf("%c,%c",&c1,&c2);
printf("c1='%c',c2='%c'\n",c1,c2);
system("pause");
}
在输入a,b的值后,让它先输出个1,然后再输入c1,c2。
输入:
12,34
(输出1)
a,b
输出:
c1='
',c2='f'
依然如旧……
于是我用了第二个程序,不过改变了一下输入方法。
输入:
12,34a,b
输出:
c1='a',c2='b'

以上。

我的问题是,要如何写代码才能保证在不出错的情况下将a,b的值和c1,c2的值分为两行输入?
编辑器是dev c++

[此贴子已经被作者于2007-9-19 10:52:14编辑过]

搜索更多相关主题的帖子: char scanf 输入 
2007-09-19 10:50
lg_mic
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-9-18
收藏
得分:0 
以下是引用死了都要C在2007-9-19 11:07:18的发言:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b;
char c1,c2;
scanf("%d,%d",&a,&b);
getchar();
scanf("%c,%c",&c1,&c2);
printf("c1='%c',c2='%c'\n",c1,c2);
system("pause");
return 0;
}

你还说你用的是DEVCPP```没有int main和return 0;```你能通过编译???


话说……我还真通过编译了…… dev-c++ version4.9.9.2,可能是我的设置有问题?

你的代码中的函数前的声明和后面的return是标准结构吧?也就是说每个函数都需要带的东西?恩恩,我以后写的时候会注意这点的,多谢多谢。

那里除了getchar和直接赋值外还有没有其他的处理方法?

另外,你的c2也是f?


2007-09-19 11:27
lg_mic
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-9-18
收藏
得分:0 
以下是引用死了都要C在2007-9-19 11:16:55的发言:
我也用DEVCPP```但是``C2是' '里面应该是空字符'\0'```不是f````


关于那里我也很奇怪,正常来讲c2应该是空啊,但是它输出的显示确实是f。搞不清楚是那里的问题。貌似定义c2时它就是f了。
输入:
12,34回车
回车
输出:
c1='
',c2='f'

[此贴子已经被作者于2007-9-19 11:34:04编辑过]


2007-09-19 11:30
lg_mic
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-9-18
收藏
得分:0 
多谢,又学会了一种方法。

如你所述,这是缓冲区中的垃圾造成的问题,那么也就是说在每次输入char或s[]前都要这么做一次了?

2007-09-19 11:51
快速回复:[求助]使用scanf时,char型的正确输入方法应该是如何?
数据加载中...
 
   



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

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