我是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
答案 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]范围内,则程序将再次显示菜单。程序将继续执行,直到用户输入正确的输入。