V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lisonfan
V2EX  ›  问与答

Xcode 里的 Command Line Tool,getchar 用什么代替?

  •  
  •   lisonfan · 2014-10-14 16:59:35 +08:00 · 3073 次点击
    这是一个创建于 3711 天前的主题,其中的信息可能已经有所发展或是发生改变。
    int a,b;
    char ysf;
    printf("请输入第一个数:");
    scanf("%d",&a);
    printf("请输入第二个数:");
    scanf("%d",&b);
    printf("请输入一个运算符");
    fflush(stdin);
    ysf=getchar();
    switch (ysf) {
    case '+':
    printf("%d+%d=%d",a,b,a+b);
    break;
    case '-':
    printf("%d-%d=%d",a,b,a-b);
    break;
    case '*':
    printf("%d*%d=%d",a,b,a*b);
    break;
    case '/':
    printf("%d/%d=%d",a,b,a/b);
    break;
    default:
    printf("无法识别您输入的运算符!");
    break;
    }

    不能输入运算符
    5 条回复    2014-10-14 18:38:51 +08:00
    lisonfan
        1
    lisonfan  
    OP
       2014-10-14 17:00:52 +08:00
    请输入第一个数:1
    请输入第二个数:2
    请输入一个运算符无法识别您输入的运算符!Program ended with exit code: 0
    jox
        2
    jox  
       2014-10-14 17:39:01 +08:00   ❤️ 1
    ಠ_ಠ

    首先,getchar是C标准库里的一个函数,跟xcode和command line tool没关系。

    然后,scanf这个函数,不会读换行符,实际上你输入的字符序列是:
    1\n2\n

    第一个scanf读取1,第二个scanf跳过第二个\n之后读取2,现在stdin里的字符序列还剩下:\n,最后一个函数getchar读取最后那个\n字符之后,程序结束。

    想要读入运算符的话,可以实现你需要的功能的修正是:在ysf=getchar();之前再加一句getchar();把那个\n消耗掉,最后的getchar没有字符可读,只好等待新的输入了。

    这是修正之后的执行结果:

    请输入第一个数:1
    请输入第二个数:2
    请输入一个运算符*
    1*2=2
    lisonfan
        3
    lisonfan  
    OP
       2014-10-14 17:56:05 +08:00
    @jox thank you very much!
    lisonfan
        4
    lisonfan  
    OP
       2014-10-14 17:57:26 +08:00
    @jox 我在Windows平台上用Dev C++开发不会出现这个问题,所以我就直接将Dev C++上写的直接copy在Xcode上了
    jox
        5
    jox  
       2014-10-14 18:38:51 +08:00
    C++我不懂啊,标准C的scanf函数的行为就是这样的,不同平台可能行为会不一样吧,一般写C程序不在xcode里写啊,既然都有xcode了,就是用苹果电脑了,用编辑器编辑C源程序,然后用make编译就行,我觉得那样更方便。

    比如我用emacs(编辑器软件)写好一个C的源代码文件,v.c,然后在v.c所在的路径下输入make v,这样就编译完成了,生成的可执行文件默认的文件名是v,直接执行v就可以观察程序的运行结果了。xcode用来写Objective-C挺方便的,写C我感觉不太好用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5050 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 07:43 · PVG 15:43 · LAX 23:43 · JFK 02:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.