c - 为什么我的 scanf for char 变量在代码块中运行时不接受值?

标签 c

这是代码

//WAP in Co convert a binary or octal to a decimal number depending on user choice.
#include <stdio.h>
#include <math.h>
int conversion(int number,int base);
int main(void){
    int number,base,decimal;
    char choice;
    printf("Enter the number:");
    scanf("%d",&number);
    printf("Enter 'b' for binary or 'o' for octal:");
    scanf("%c",&choice); //Problem occuring here 
    if(choice=='b')
        base=2;
    base=8;
    decimal=conversion(number,base);
    printf("Decimal number:%d",decimal);
    return 0;
}

int conversion(int number,int base){
    int reminder;
    int decimal=1;
    int i=0;
    while(number>=0){
        reminder=number%base;
        decimal=(decimal*reminder)*pow(base,i);
        number/=10;
        i++;
    }
    return decimal;
}

最佳答案

您有两个 scanf(),在第一个之后,某些字符被遗漏以供读取。您可以在下一个 scaf() 之前使用 getchar() 它应该接受下一个输入

printf("Enter 'b' for binary or 'o' for octal:");
getchar();
scanf("%c",&choice);

在转换函数中,带有条件的 while 循环会导致其进入无限循环。将正数除以 10 所得的最小值为 0。使用以下代码:

while(number>0)

此外,如果第二次输入后的条件没有用。因为无论如何你都将 8 分配给基数。

关于c - 为什么我的 scanf for char 变量在代码块中运行时不接受值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38278959/

相关文章:

c - 双向先进先出

c - 二叉树函数

c - 如何解析 char str 并创建一个新的 int 数组

c - 编写一个函数,如果传递给它的 2 个字符串使得第一个字符串的所有字符都唯一地出现在第二个字符串中,则该函数返回 true

c - 将参数传递给参数

c - 计算矩阵的 c 次方

c - 通用写入结构指针

c - GNU C 编译器破坏未定义的行为

c - 这相当于 C 中的复合赋值吗?

objective-c - ARC Objective-C 中的 C 风格多维数组