【发布时间】:2017-10-12 14:06:45
【问题描述】:
我写了一些 C 代码来读取两个数字和一个运算符:
int Numberone = 0, Numbertwo = 0;
char Op;
scanf_s("%d %c %d", &Numberone, &Op, &Numbertwo);
用户输入他的 Input (5 + 2) 后,变量的值如下:Numberone = 5, Op = + 和 Numbertwo = 0。但这是错误的。第二个应该是 2。我怎样才能改进我的代码?为什么我的代码错了?
【问题讨论】:
-
您的输入究竟是什么,您的实际输出是_究竟是什么,您的预期输出是究竟是什么。请edit您的问题。
-
scanf_s()(微软的)需要%c的缓冲区大小。只是不要使用它,使用scanf()。 -
scanf_s("%d %c %d", &Numberone, &Op, &Numbertwo);-->scanf_s("%d %c %d", &Numberone, &Op, 1, &Numbertwo);。见scanf_s -
顺便说一句,对于实际的用户输入,
scanf()和朋友无论如何都是错误的选择(但sscanf()在您从fgets()获得的输入行上可能很好)。请参阅我的beginners' guide away fromscanf()了解一些信息。
标签: c console-application