作者bob123 ()
看板Programming
标题Re: [问题] 输入资料的型态判别 C
时间Sun Sep 13 01:04:07 2009
※ 引述《homestay (homestay)》之铭言:
: 大家好 小弟是C语言的新手.
: 昨天试了一晚还是想不出方法,想拜托大家= =
: 一般输入资料型态都是既定(应该吧)
: 如scanf必须指定%? gets是直接拿字串等等
: 有的题目的输入值为:
: 235 3546
: 346346 34577
: 3567 46
: .
: 每行有两数字中间有空白隔开,若是遇到'.'则结束。
如果确定输入格式是每行两数字夹一空白的话..
int a = 0 ,
b = 0 ;
while( scanf("%d %d", &a, &b) )
{
printf(">> %d - %d\n", a, b);
}
: 小弟本以为可以直接用scanf,遇到'.'直接可以转成符号编码(int)。
: 但是测试後似乎不行直接转型态(数字太大可能会改用long)
: 第二个想法是旧资料的方式,用阵列以gets将整行输入後判断是否为'.'再转成数字
: 转成数字的方式我是用2个回圈 第一次读到' '停(空白这样写不知有没有错)
: 第二次读到'\0'停
: 结果是:只读一个数字的版本有成功,可是读两个compiler正确 可是读失败
compile (v.)
: 冏~
:
: 以上是小弟的问题 不知道大家有没有比较好或是直接的方法
: 感激不尽T^T
: 感谢大大回答 不过有的指令我不知道用法,正在估狗中
c 的话就 cppreference吧 XD
: 附一下我的写法,complier没错 只是结果是错的
: void main()
: {
: char str[20];
: while((str[i]=getche())!='.')
: {
: if(((str[i])==' ')||((str[i])=='\n'))
: printf("进入空白或ENTER");
: else{
: printf("进入ELSE");
: }
: ++;
: }
: printf("因为按了.跳出");
: }
: 似乎无法成功读取enter= =
这边你可以先试试看印出 按下enter後 getche()传回的值
跟 '\n' 比较一下
最後再看看 ascii table
会比较清楚喔
有东西出错我都会先印出来印证一下自己的逻辑 XD
: 是这边写法有错,可是不知道要改成什麽~冏
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.118.65.157
1F:推 homestay:感谢~方法瞒实用的 我刚刚用getche把全 220.133.0.87 09/13 10:42
2F:→ homestay:部打入的字元判断後再转乘数字= = 有点呆 220.133.0.87 09/13 10:42