我觉得我在这里遗漏了一些非常明显的东西,但我似乎无法找到我的代码的问题。我正在尝试使用 scanf 来查找输入是否为整数,如果是,请查找八进制。如果它不是整数,那么它只是提示用户再次输入。但是,出于某种原因,我似乎只能让代码在相反的情况下工作,即不接受整数而接受其他任何东西。似乎这将是一个简单的问题来解决,但否则我只会得到无限循环。你们可以提供的任何帮助将不胜感激。
#include <stdio.h>
enum state {success,fail,quit};
int status = fail;
int main(void)
{
int n;
char t;
do
{
printf("Enter a number between 0 and 32767: ");
if(scanf("%d%c", &n, &t) != 2 )
status = success;
}
while (status == fail);
if (status == success)
{
int oct1, oct2, oct3, oct4, oct5;
oct1 = ((((n / 8) / 8) / 8) / 8) % 8;
oct2 = (((n / 8) / 8) / 8) % 8;
oct3 = ((n / 8) / 8) % 8;
oct4 = (n / 8) % 8;
oct5 = n % 8;
printf("In octal, your number is: %d%d%d%d%d\n", oct1, oct2, oct3, oct4, oct5);
return 0;
}
}