【发布时间】:2016-12-13 02:04:21
【问题描述】:
我正在开发一个将二进制转换为十进制的程序,用户输入原始数字或按 q 退出。我的 while 循环没有退出,q 被解释为十进制数。阻止此问题并解决此问题的最佳方法是什么?以下是预期输出、实际输出和我的代码。
预期输出:
Enter binary byte or press q to quit: 111
7
Enter binary byte or press q to quit: q
Goodbye!
实际输出:
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;
}
【问题讨论】:
-
while (fgets(bnumber, 10, stdin) != STOP)-->while (fgets(bnumber, 10, stdin) && bnumber[0] != 'q')对你有用吗?
标签: c while-loop fgets