ここでひどく明白な何かが欠けているように感じますが、コードの問題を見つけることができないようです. 入力が整数かどうかを調べるために 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;
}
}