使用`getchar()`终止while循环

Sno*_*Mac 2 c getchar

对于我的家庭作业,我需要实现Horners算法来在基数之间进行转换.

我被告知要getchar()用于这项任务.但是我遇到了一个问题,当我按下Enter键时,程序不会终止并且只会占用更多的字符.

例:

bryce> ./pa1
Enter the fromRadix:16

Enter the toRadix:2
abc
abc
^C
bryce> 
Run Code Online (Sandbox Code Playgroud)

码:

int readRadixA(int radixA)
{
    char myChar = getchar(); 
    int result = 0; 
    int run = 0; 

    while(myChar != EOF)
    {
        if(myChar == "\n")
            break;

        Horners();

        myChar = getchar(); 
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

我不是要求帮助实施Horners; 我正在寻求帮助以getchar()正确终止.

cni*_*tar 5

if(myChar=="\n")
           ^  ^
Run Code Online (Sandbox Code Playgroud)

你在比较myChar错误.试试这个:

if(myChar == '\n') 
             ^  ^
Run Code Online (Sandbox Code Playgroud)

第二个问题是getchar退货int,而不是char.也许你可以像这样重写它:

int myChar;
while((myChar = getchar()) != EOF && myChar != '\n')
{
    /* Your stuff. */
}
Run Code Online (Sandbox Code Playgroud)

编辑

根据评论,我认为之前的一些stdio操作while\n在缓冲区中留下一个.

而不是scanf("%d", &radix)尝试:

scanf("%d ", &radix);
         ^
Run Code Online (Sandbox Code Playgroud)

那个空间会让scanf剩下的空白吃掉(包括新线).