Objective C中的Scanf崩溃了Xcode和程序

时间:2013-10-10 01:53:14

标签: objective-c c xcode crash scanf

我已从代码中删除scanf,程序的其余部分运行没有问题。当代码到达scanf时,在我键入数字后,xcode'失去连接'并显示错误“程序以退出代码结束:-1”。我也尝试将'input'设为int,如果存在冲突则更改变量输入的名称,并在代码中尝试不使用fflush。我在Oracle VM Virtualbox上运行Mountain Lion,而我的计算机在Windows 7上运行,如果这是相关的。

我做错了什么?

#import Foundation/Foundation.h
#include stdio.h

int main(int argc, const char * argv[])

{

    @autoreleasepool {

        float input = 1;
        int i = 0;
        float total = 0;
        int max = 0;
        int min = 1000;


        while (input != 0){
            NSLog(@"Please put in a number. \n");
            scanf("%f", &input);

            fflush(stdin);

            if(input > max){
                max = input;
            }
            if(input < min){
                min = input;
            }
            total = total + input;
            i++;

        }

        printf("The number of entered numbers was %i \n", i);
        printf("The sum of the entered numbers is %f\n", total);
        total = total/i;
        printf("The average of all the numbers is %f\n", total);
        printf("The highest number entered is %i\n", max);
        printf("The lowest number entered is %i\n", min);


    }

    return 0;
}

2 个答案:

答案 0 :(得分:0)

fflush(stdin);

你可能想要

fflush(stdout)

我不确定fflush()会对输入的FILE *执行什么操作。 这可能是您的问题的原因,也可能不是。

答案 1 :(得分:0)

Return和Enter键在Xcode中有不同的含义。您转到产品菜单并选择构建构建以便运行并在终端中执行它将正常工作。

在Xcode中,数字键盘中的Enter键会以-1返回代码停止程序。我不确定这是错误还是功能,但我找不到Xcode的键绑定中的键。

请检查here