我该怎么做才能解决此问题?

时间:2020-02-18 16:04:46

标签: c clion

ionic run android

这是我的代码,我希望当用户在上一个scanf中输入“ 1”时重新运行 我做错了什么?

1 个答案:

答案 0 :(得分:4)

此:

scanf("%d", op);

是即时未定义行为;您需要像其他呼叫一样传递地址(即&op)。您需要寻找编译器警告,即使从scanf()的纯原型不可能实现,它们也通常会发现这些问题,但是需要启发式。

也就是说,在scanf()上使用stdio的这种一次字段输入很脆弱;最好使用fgets()读取整行,然后解析字符串。请注意,scanf()可能失败,您无需检查。如果有人输入duck作为最后的提示,则op将永远不会被赋值,并且在do{}while中读取它也是不确定的行为。