바이너리를 10 진수로 변환하는 프로그램을 작성 중입니다. 사용자가 원래 숫자를 입력하거나 q를 눌러 종료합니다. 내 while 루프가 종료되지 않고 q가 십진수로 해석됩니다. 이 문제를 막고이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 아래 예상 출력, 실제 출력 및 내 코드입니다.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, 표준 입력) = STOP) 동안'로 간단한 무언가를'->'동안 (는 fgets (bnumber, 10, 표준 입력) && bnumber [0]! = 'q')'너에게 도움이 되니? – chux