24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1478  |  回复: 8

mplanck

至尊木虫 (职业作家)


[交流] 【求助】linux 下scanf怎么没执行?

linux下如下一段:
--------------------------------------------
  printf("MO is %d\n\n",norb);     !----这句执行了
  Nre=scanf("MOi=%d",&moi);        !----这句没执行
  printf("return value is %d \n\n",Nre);    !返回值为-1
--------------------------------------------
我想通过键盘输入moi,但那句偏没执行。
请高手指点下,非常感谢!

[ Last edited by mplanck on 2010-12-6 at 19:32 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bignature

木虫 (小有名气)


★ ★
mplanck(金币+1):谢谢参与
余泽成(金币+1):谢谢参与应助! 2010-12-07 16:23:58
真新鲜,把scanf的返回值赋给Nre.

scanf的第一个参数最好不要有"moi=%d",直接%d就可以了,否则你输入的时候一定要moi=123.4,这是格式输入!

[ Last edited by bignature on 2010-12-6 at 19:29 ]
2楼2010-12-06 19:27:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mplanck

至尊木虫 (职业作家)


引用回帖:
Originally posted by bignature at 2010-12-06 19:27:54:
真新鲜,把scanf的返回值赋给Nre.

scanf的第一个参数最好不要有"moi=%d",直接%d就可以了,否则你输入的时候一定要moi=123.4,这是格式输入!

[ Last edited by bignature on 2010-12-6 at 19:29 ...

linux下,不加那个返回值,编译时会报警。
"moi=%d"或"%d"在我这个问题中都无所谓,因为那句根本就没执行,Nre返回值为-1
所以拿到这里请教大家
3楼2010-12-06 19:31:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bignature

木虫 (小有名气)


★ ★
余泽成(金币+1):谢谢参与应助! 2010-12-07 16:24:07
余泽成(金币+1):谢谢参与应助! 2010-12-12 20:56:45
scanf的返回值要么是1,要么是0
都说了你输入的时候要输入"MOi=12345.",scanf中的格式串如果包含其他字符,输入的时候要原样输入。
scanf才能将其放到&MOi中去。
嘿嘿。
另外, linux有警告是因为你没有包含头文件。

[ Last edited by bignature on 2010-12-7 at 10:37 ]
4楼2010-12-07 10:30:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mplanck

至尊木虫 (职业作家)


引用回帖:
Originally posted by bignature at 2010-12-07 10:30:20:
scanf的返回值要么是1,要么是0
都说了你输入的时候要输入"MOi=12345.",scanf中的格式串如果包含其他字符,输入的时候要原样输入。
scanf才能将其放到&MOi中去。
嘿嘿。
另外, linux有警告是 ...

我包含了头文件,警告不是它造成的,是linux系统的要求。
scanf返回值是输入的个数。
我的情况是没提示输入,给的返回值是-1,所以想不通

...
5楼2010-12-07 10:47:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yyqiao

金虫 (小有名气)


★ ★
mplanck(金币+1):谢谢参与
余泽成(金币+1):谢谢参与应助! 2010-12-12 20:57:00
加个flush试试。
输入、输出,都是有缓冲的。

另外,这样输入,是不是太麻烦?每次,都得敲键盘,一不小心敲错了....
改成读一个文件多好。

只要先在文件中,输入数字。
然后,运行程序就可以了。

要该输入的内容,那就改文件。

[ Last edited by yyqiao on 2010-12-8 at 08:16 ]
6楼2010-12-08 07:59:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhougc

木虫 (正式写手)



mplanck(金币+1):谢谢参与
建议你把代码贴上来,可以用gdb调试一下。

linux环境还是windows环境是无所谓的。
7楼2010-12-08 23:04:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)


★ ★
mplanck(金币+1):谢谢参与
余泽成(金币+1):谢谢参与应助! 2010-12-12 20:57:24
scanf的返回值是读入的字节数或者是EOF(出错或者到达文件末,具体区分的根据ferror来检测错误标志的)

所以会出现LZ的那样的问题。
引用回帖:
Originally posted by bignature at 2010-12-07 10:30:20:
scanf的返回值要么是1,要么是0
都说了你输入的时候要输入"MOi=12345.",scanf中的格式串如果包含其他字符,输入的时候要原样输入。
scanf才能将其放到&MOi中去。
嘿嘿。
另外, linux有警告是 ...

8楼2010-12-11 23:35:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)



余泽成(金币+1):谢谢参与应助! 2010-12-12 20:57:47
你写的是 Nre=scanf("MOi=%d",&moi);
所以你得输入 MOi=xxx
要区分大小写的。
其他的bignature   其实都给你说的很清楚了。没有执行怎么会给Nre赋值呢?
引用回帖:
Originally posted by mplanck at 2010-12-06 19:31:57:


linux下,不加那个返回值,编译时会报警。
"moi=%d"或"%d"在我这个问题中都无所谓,因为那句根本就没执行,Nre返回值为-1
所以拿到这里请教大家

9楼2010-12-11 23:38:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mplanck 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见