c用于计算表达式的程序

时间:2017-12-25 13:27:47

标签: c

我已经让这个程序计算像'2 + 6 - 9'这样的表达式(数字和运算符之间有空格),但最后一个if块不正确。如何在收到\ n时中断循环,如果没有则还存储输入。

arr[0][0]               ==      & arr[0][0]
*( *(arr+0) + 0)        ==      & *( *(arr+0) + 0)
*( *(0x100 + 0x16) + 0) ==      & *( *(0x100 + 0x16) + 0)
*( *(0x100))            ==      & *( *(0x100))
*( 0x100)               ==      & *( 0x100)
0x100                   ==      & 0x100
0x100                   ==      0x100

1 个答案:

答案 0 :(得分:2)

请参阅the documentation for scanf

  

成功时,该函数返回成功填充的参数列表的项目数。

替换此部分:

if((scanf("%c",&oper))=='\n')
    break;

使用:

if(scanf("%c",&oper) && oper=='\n')
    break;

此:

  • 检查scanf()是否已将任何值加入oper
  • 如果是,则检查该值是否等于\n