バイナリを10進数に変換するプログラムで作業しています。ユーザは元の数値を入力するか、qを押して終了します。私のwhileループは終了せず、qは10進数として解釈されます。これをやめてこの問題を回避する最善の方法は何ですか?以下は、期待される出力、実際の出力、私のコードです。C:whileループ終了条件、入力のためのfgetsの使用
予想される出力:
Enter binary byte or press q to quit: 111
7
Enter binary byte or press q to quit: q
Goodbye!
実際outout:
Enter binary byte or press q to quit: 111
7
Enter binary byte or press q to quit: q
65
コード:
他の人が言ったように#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#define STOP "q"
int convertbinary(char *binarynumber);
int main()
{
int binaryreturn;
char *bnumber;
int len;
bnumber = (char *) malloc(10 * sizeof(char *));
printf("Enter binary byte or type q to quit:?\n");
while (fgets(bnumber, 10, stdin) != STOP)
{
len = strlen(bnumber);
if (bnumber[len - 1] == '\n')
{
bnumber[len - 1] = 0;
}
else
{
//blank line
}
binaryreturn = convertbinary(bnumber);
printf("%d\n", binaryreturn);
printf("Enter binary byte or type q to quit:?\n");
}
free(bnumber);
return 0;
}
int convertbinary(char *binarynumber)
{
int val = 0;
while (*binarynumber != '\0')
val = 2 * val + (*binarynumber++ - '0');
return val;
}
'しばらく(関数fgets(bnumber、10、STDIN)= STOP!)'のような単純な何かい - > 'しばらく(関数fgets(bnumber、10、標準入力を)&& bnumber [0]!= 'q') 'あなたのために働く? – chux