cheny3636 发表于 2014-8-17 17:52:58

VS2013和VC6.0问题

本帖最后由 cheny3636 于 2014-8-17 18:02 编辑

用VS2013执行这段代码没有问题但是输入后出现一大堆的错误提示:

# include <stdio.h>

int main(void)
{
      double number1 = 0.0;
      double number2 = 0.0;
      char operation = 0;

      printf("\n请输入:");
      scanf_s("%lf%c%lf", &number1,&operation,&number2);

      switch (operation)
      {
      case '+':
                printf("= %lf\n", number1 + number2);
                break;

      case '-':
                printf("=%lf\n", number1 - number2);
                break;

      case'*':
                printf("= %lf\n", number1*number2);
                break;

      case '/':
                if (number2 == 0)
                        printf("输入不合法");
                else
                        printf("= %lf\n", number1 / number2);
                break;

      case '%':
                if ((long)number2 == 0)
                        printf("输入不合法");
                else
                        printf("=%lf", (long)(number1) / (long)(number2));
                break;

      default:
                printf("请输入");
                break;
      }


//      getchar();
      return 0;
}

用VC6.0执行此代码又是正确的。请大神指点为什么VS2013执行后会出现程序异常,用Vc6.0又没有问题。这类问题应该如何避免错误访问呢?

你好啊 发表于 2014-8-17 17:52:59

VS2013输入字符串必须指定输入长度
你把 scanf_s("%lf%c%lf", &number1,&operation,&number2);
改成 scanf_s("%lf%c%lf", &number1,&operation, sizeof(1),&number2);
就行了

xmhh0425@163.co 发表于 2014-8-17 18:45:46

表示VS的连怎么运行都不会。。。。

cheny3636 发表于 2014-8-17 18:57:58

有没大神啊 求解答这VS2013是错误操作了系统地址还是咋滴?

Nmboy 发表于 2014-8-18 15:43:03

是不是不兼容啊

小小孩; 发表于 2014-8-18 21:56:44

VC++6.0哪里下载啊:mad:

shi632326403 发表于 2014-8-18 22:33:24

我也试着用过VS2013 也是一样程序过不了编译

h1006272147 发表于 2014-8-19 12:44:08

有些我用VS2013也是会出错,是因为他们的标准不一样,VS的标准更为严格,vc++6.0好像是C99,VS2013不清楚。

yuzhiji 发表于 2014-8-21 11:28:15

:lol::lol::lol:

新浪 发表于 2014-8-22 20:35:14

你好啊 发表于 2014-8-21 00:05
VS2013输入字符串必须指定输入长度
你把
改成


:lol:

cheny3636 发表于 2014-8-22 20:50:51

你好啊 发表于 2014-8-21 00:05
VS2013输入字符串必须指定输入长度
你把
改成


恩   问题已经找到了   你那种也可以   用scanf也可以
# include <stdio.h>

int main(void)
{
        double number1 = 0.0;
        double number2 = 0.0;
        char operation = 0;

        printf("\n请输入:");
        scanf("%lf %c %lf", &number1,&operation,&number2);

        switch (operation)
        {
        case '+':
                printf("= %lf\n", number1 + number2);
                break;

        case '-':
                printf("=%lf\n", number1 - number2);
                break;

        case'*':
                printf("= %lf\n", number1*number2);
                break;

        case '/':
                if (number2 == 0)
                        printf("输入不合法");
                else
                        printf("= %lf\n", number1 / number2);
                break;

        case '%':
                if ((long)number2 == 0)
                        printf("输入不合法");
                else
                        printf("=%lf", (long)(number1) / (long)(number2));
                break;

        default:
                printf("请输入");
                break;
        }
        return 0;
}

破ID 发表于 2014-8-22 22:10:37

我只是路过打酱油的。

康小泡 发表于 2014-8-23 09:37:56

还是vc好 不会报错 我用vs2010但是不支持debug版本 只支持release版本 开始很倒腾了很久 还是vc实在

w120699 发表于 2015-5-14 17:54:34

:funk:
页: [1]
查看完整版本: VS2013和VC6.0问题