-2

我用objective-c写了一个小控制台程序。需要用scanf的方法来接收号码,输入一个字符会出错,所以我尝试解决,但是已经进入了死循环!看到下面的代码,帮我解决一下,非常感谢!

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int num1 = 0;
        NSLog(@"Please input number:");
        while (!scanf("%d", &num1)) {
            fflush(stdin);
            NSLog(@"Input error,just input number:");
        }
    }
    return 0;
}
4

1 回答 1

0

状态的文档fflush

函数 fflush() 通过流的底层写入函数强制写入给定输出或更新流的所有缓冲数据。流的打开状态不受影响。

并且您正在尝试刷新输入。尝试fpurge

函数 fpurge() 擦除在给定流中缓冲的任何输入或输出。

也不!scanf(...)。_ 检查文档,此函数返回一个整数,而不是布尔值,并且该值可以是正数或负数(查找 的定义EOF)。负值表示错误,但!操作员将让步false,并且您的代码不会要求新的输入。

如果成功scanf返回成功解析的项目数,请检查。

所有这些函数的文档都可以通过 Xcode 或man命令获得。

高温高压

于 2016-03-02T07:12:38.037 回答