| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4217 人关注过本帖
标题:关于scanf的问题,输入一个字符 然后输出 为什么我这种编法不能达到目的?
只看楼主 加入收藏
sweetrryy
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-10-1
收藏
 问题点数:0 回复次数:14 
关于scanf的问题,输入一个字符 然后输出 为什么我这种编法不能达到目的?
1 #include "stdio.h"
2 main()
3 {
4  int a;
5  printf("please input the data:");
6  scanf("%d\n",&a);
7  printf("%d",a);
8  
9 }
编译运行后
please input the data: 输入6 回车 无返回结果 再输入一个3 返回 结果6
但当将\n去掉后 一切正常 是不是因为%d 是输入变量a中的 后面类个转义就多余了?
但将第6行 改成scanf("%d%d",&a);输出结果变成 输入6 回车 无返回结果 再输入一个3 返回结果:
6
Null pointer assignment
想了半天 百思不得其解 我猜测是不是与scanf的输入格式有关(有可能是我看书不认真~呵呵 别骂我啊~ ) 请知道的人指点一下 谢谢!
搜索更多相关主题的帖子: printf scanf 字符 输出 
2008-10-01 17:47
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
scanf("%d\n",&a);
既然有个\n 你输入时也输入个\n不就OK了...
scanf("%d%d",&a);
对于这个我只想说一句,不管怎样...输入都得与你的""中的格式对应...

2008-10-01 18:23
wangweinoo1
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2008-9-7
收藏
得分:0 
要“\n”作甚。。。
同意二楼大大~~~~
2008-10-01 18:25
守鹤
Rank: 4
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
收藏
得分:0 
我来介绍下 scanf的用法
此函数是从键盘上获取输入数据,并将数据送入指定的内存空间中

scanf("%d%d",&a,&b); 从键盘获取数据送入a,b两个地址单元中
%d是格式控制,主要控制输入数据的类型,一个对应一个输入的数据。例: d 整型数,c 字符数,s 字符串等等
后面则是输入的数据要存放的地址(空间)。

若是scanf("%d%d",&a);且输入完了一个数据,程序会等待用户输入下一个数据,至于下一个数据存放的位置,系统会随机给予空间。
scanf("%d",&a,&b);则只需输入一个数据,b不做任何处理

多少个日日夜夜想起你,只希望有缘再次相见
2008-10-01 18:43
w0nfer
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-9-4
收藏
得分:0 
scanf("%d\n",&a);这句有问题啊,回车后才能读放这个数,所以改成scanf("%d",&a);就行
2008-10-01 19:03
八秒钟
Rank: 1
等 级:新手上路
威 望:1
帖 子:42
专家分:0
注 册:2006-12-20
收藏
得分:0 
scanf里面当然不能出现\n
你想让它换行输出可以写printf("\n%d",a);
scanf("%d%d",&a);就是要输入两个数才行,输入一个当然没反应
2008-10-01 19:16
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
1 #include "stdio.h"
2 main()
3 {
4  int a;
5  printf("please input the data:");
6  scanf("%d",&a);
7  printf("%d\n",a);
8  
9 }
这样估计就可以了
2008-10-01 20:24
四眼罗
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-5-19
收藏
得分:0 

·呵呵~我自己也遇到过

认真检查自己的程序最好了!
2008-10-01 22:32
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
首先,你的程序不规范,不标准.
第二,你的scanf("%d\n...中的回车换行可以不加,scanf是严格按照你的输入格式来执行的
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a = 0;
    printf("please input the data:\n");
    scanf("%d", &a);
    printf("output:%d\n", a);
    system("pause");
    return 0;

 }

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-10-01 22:44
sweetrryy
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-10-1
收藏
得分:0 
[bo][un]守鹤[/un] 在 2008-10-1 18:43 的发言:[/bo]

若是scanf("%d%d",&a);且输入完了一个数据,程序会等待用户输入下一个数据,至于下一个数据存放的位置,系统会随机给予空间。
scanf("%d",&a,&b);则只需输入一个数据,b不做任何处理

哦 我明白了 是不是由于scanf在输入两个数据时 必须用回车或空格间隔  所以在多一个转义符或数据的情况下需要多按一次回车才有结果~
谢谢各位热心人了~~
谢谢谢谢!
2008-10-02 11:14
快速回复:关于scanf的问题,输入一个字符 然后输出 为什么我这种编法不能达到目的 ...
数据加载中...
 
   



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

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