我在这个简单的循环练习中遇到了问题。我认为代码是正确的,我没有得到任何错误,但是当我运行程序时,我只是得到了#34; ^ C"一遍又一遍地。请帮忙。
#import <readline/readline.h>
#import <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[])
{
printf("Where should I start counting? ");
const char *numInput = readline(NULL);
int countDownStart = atoi(numInput);
for (int i = countDownStart; i >= 0; i--) {
if (i % 3 == 0){
printf("%d\n", i);
if (i % 5 == 0) {
printf("Found one!\n");
}
}
}
return 0;
}
更新8/3/14
当我使用键盘上方的数字输入起始编号时,代码有效。然而,当我用我的10键输入起始编号时,我得到&#34; ^ C&#34;每次我打进去。现在我完全陷入困境,但至少我的代码可以运作。
感谢大家的帮助。我知道atoi不是最好的功能,但我正在尝试通过Big Nerd Objective-C书。
答案 0 :(得分:0)
在atoi中使用strtol,因为它在转换失败的情况下返回错误值。
答案 1 :(得分:0)
您必须检查从函数readline
收到的输出const char *numInput = readline(NULL);
printf ("Input %s", numInput); //debugging
int countDownStart = atoi(numInput);
如果函数总是返回相同的字符串,则结果也将保持不变。