【问题标题】:Run-Time Check Failure # 2运行时检查失败 #2
【发布时间】:2013-02-26 11:36:14
【问题描述】:

我正在练习我的 C Prog 语言 我决定创建一个具有收银功能的沙龙

看起来很乱, 虽然我还在学习

在这里发布:http://pastebin.com/B2XaaCYV

它说变量“菜单”的运行时错误,但我尝试重新检查它大约 5 倍,我没有看到任何错误。 代码很简单 like xy[0][1] = default 0 = 表示尚未购买。它的值将仅为 0/1。选择发型后实际购买时为1。

当然

xy[1][i] means price of xy[0][i]

我尝试使用其他技术,例如删除中断和更改变量名称,但它仍然显示变量菜单运行时错误

不知道是什么导致了错误。所以我希望有人能帮我解决这个问题

【问题讨论】:

  • 与其提供巨大的代码,不如将其缩减为最小化的工作版本..
  • 我试图复制错误。但是我不知道如何将其最小化,这就是为什么我没有将整个代码放在这里的原因。因为它真的很长
  • 在您的示例中使用 conio 的事实......我无法编译,因此我无能为力,正如 uba 所说,将其减少到最小化的工作版本
  • @DavidRF:真的不需要conio.h。删除它,您可以编译并见证恐怖。 也许。这是未定义的行为。

标签: c


【解决方案1】:
scanf("%1s",&menu);

不! char 根本不是字符串。您想获取单个字符,因此请使用 getchar()scanf("%c",&menu);

您的core_return 中有一个相关错误,您尝试将 3 个字符读入一个字符。另外,不要在子程序中调用您的main。而是从子例程返回并在主程序中放置一个循环。顺便说一句,'yes''no' 无效。如果你想比较字符串,你必须使用strcmp

// returns 1 if the user wants to go again
int another_menu(void)
{
    char tmp[20];
    printf("Do you want another service?");

    for(;;){
        scanf("%3s",tmp);
        if(strcmp("y",tmp) || strcmp("yes",tmp))
            return 0;
        else if(strcmp("n",tmp) || strcmp("no",tmp))
            return 1;
        printf("Please specify either 'no' or 'yes': ");
    }
}

使用编译器警告可以更快地找到错误(GCC:-Wall -Wextra)。

【讨论】:

  • 嗨,我尝试将 scanf("%c",var) 与其他 scanf("%1s",var) 一起使用,这是pastebin.com/KsZYqCXP 在选择理发并选择样式后发生的事情。它跳过了我将选择发型的部分并直接进入 core_return func。这不对
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-24
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
相关资源
最近更新 更多