验证C中的输入

时间:2016-02-04 23:29:41

标签: c

我是C的新手,正在玩一个简单的基于菜单的程序。但是,当用户输入空格,字符或字符串时,程序将进入无限循环。

我相信这是因为我宣布选项为if (!_backgroundImageView.image) { CGFloat width = CGRectGetWidth(self.bounds); CGFloat height = CGRectGetHeight(self.bounds); CGFloat tWidth = 0.26794919243f/*tan(15 degrees)*/ * height; UIGraphicsBeginImageContext(CGSizeMake(width, height)); CGContextRef context = UIGraphicsGetCurrentContext(); if (_color1) { CGContextSetFillColorWithColor(context, _color1.CGColor); CGContextMoveToPoint(context, 0, 0); CGContextAddLineToPoint(context, 1.0f + RoundPixelValue((width + tWidth) / 2.0f), 0); CGContextAddLineToPoint(context, 1.0f + RoundPixelValue((width - tWidth) / 2.0f), height); CGContextAddLineToPoint(context, 0, height); CGContextFillPath(context); } if (_color2) { CGContextSetFillColorWithColor(context, _color2.CGColor); CGContextMoveToPoint(context, width, 0); CGContextAddLineToPoint(context, RoundPixelValue((width + tWidth) / 2.0f) - 1.0f, 0); CGContextAddLineToPoint(context, RoundPixelValue((width - tWidth) / 2.0f) - 1.0f, height); CGContextAddLineToPoint(context, width, height); CGContextFillPath(context); } _backgroundImageView.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); } 。我是否必须申报int& optionChar来处理错误,或者如何验证用户输入的是整数而不是C中的字符串或字符串?

optionString

1 个答案:

答案 0 :(得分:0)

int n;    /* The user input choice */
do {
     printf("MENU\n"
            "1. foo();\n"
            "2. bar();\n"
            "3. Quit\n"
            "Enter your option: ");
} while (scanf("%d", &n) != 0 && n >= 1 && n <= 3);

此代码显示菜单,然后检查用户输入。如果它不是数字,或者它不在[1,3]范围内,则程序将再次显示菜单。程序将继续执行,直到用户输入正确的输入。