黑马程序员技术交流社区

标题: 关于scanf的问题,为什么第二个可以正常运行,第一个那个char类型不会打印出来??? [打印本页]

作者: ios_fce    时间: 2014-4-25 11:08
标题: 关于scanf的问题,为什么第二个可以正常运行,第一个那个char类型不会打印出来???
#include <stdio.h>
int main()
{
    //定义一个变量用来保存用户输入的整数
    int number;
   
    scanf("%d", &number);
    printf("%d\n",number);
    char c;
    scanf("%c\n",&c);
    printf("%c",c);
    return 0;
}

------------------------------------------
#include <stdio.h>
int main()
{
    //定义一个变量用来保存用户输入的整数
    //    int number;
    //
    //    scanf("%d", &number);
    //    printf("%d\n",number);
    //scanf函数回车之后就不能再执行另一个scanf()函数了。
   
    int a,b;
    scanf("%d %d",&a,&b);
    printf("a=%d b=%d\n",a,b);
   
    int c;
    scanf("%d",&c);
    printf("%d\n",c);
}

作者: 悠悠·漠漠    时间: 2014-4-25 11:34
scanf里面不要加换行,\n对它有特殊含义
作者: 郑亚鸽    时间: 2014-4-25 11:36
\n在scanf中不表示等待换行符,而是读取并放弃连续的空白字符
scanf("%c\n",&c);这里的'\n'意味着输入完毕,不会再接受输入值,且程序也不结束
故改为scanf("%c",&c);
作者: ios_fce    时间: 2014-4-25 11:51
写错了,去掉\n也不行
作者: 葬花桥    时间: 2014-4-25 12:06
本帖最后由 葬花桥 于 2014-4-25 12:07 编辑

楼主是不是在Xcode调试程序?我在Xcode中也会遇到这种情况,在第一个scanf输入之后程序直接结束并且还会输出printf中的字符串,但是程序本身是没有问题的,因为我把程序放到VS2012中去是可以正常运行的,这应该是Xcode的问题!楼主可以先把程序放到windos中去调试看看
作者: 兰闻天    时间: 2014-4-25 12:23
数据类型的问题吧,可能是第一个输入的是int型,第二个输入的是char型,xcode不支持吧。都是int型就好使。
作者: 大龄产妇    时间: 2014-4-25 13:36
scanf  语句默认结尾就是\n ,所以不必要再加换行了。
例如: scanf("%d\n%d",%a,%d);若想换行可以中间加\n 或者 空格键  
当中间是空格键时:用户默认输入完后  ,  空格  和 回车  程序都能继续。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2