对于我的家庭作业,我需要实现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()正确终止.
Run Code Online (Sandbox Code Playgroud)if(myChar=="\n") ^ ^
你在比较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剩下的空白吃掉(包括新线).