【发布时间】:2018-04-28 07:47:15
【问题描述】:
void emt_card_discount()
{
char emt_card[8];
char*none[5];
int new_total_amt;
printf("\tkey in EMT card number (7 figure) if present or type 'none': \n\t >> ");
scanf_s("%s", &emt_card);
if (strcmp(emt_card,"none") == 0)
{
printf("\tyour seat price is: %.2f\n",total_amt);
}
else
{
new_total_amt = total_amt*0.15;
printf("\tyour seat price is(RM):%.2f\n", new_total_amt);
}
}
这是我的 strcmp 代码。这个特别的基本功能是为预订机票的用户提供输入卡信息以获得特别折扣。但每当我到达这部分代码时,整个控制台应用程序都会崩溃。
.
【问题讨论】:
-
只要用户不输入 8 个(或更多)字符,
strcmp调用就没有问题。请尝试创建Minimal, Complete, and Verifiable Example 向我们展示。 -
顺便提一下,
scanf调用中的&emt_card在语义上是错误的。它之所以有效,是因为它恰好指向正确的位置,但它是错误的类型("%s"格式需要一个指向 char 的指针,即char *,但&emt_card的类型是char (*)[8])。使用&emt_card[0]或其等效的emt_card。 -
哦,我建议你花点时间去read this
scanf_sreference。因为那是导致崩溃的原因,而不是strcmp调用。
标签: c