yeoh 发表于 2018-12-5 23:40:47

0基础入门C语言版本问题

#include <stdio.h>

void main()
{
        /*
        float a, b;
        char c;
        printf("input expression:a+(-,*,/)\n");

        scanf_s("%f,%c,%f", &a, &c, &b);

        switch (c) {
        case '+':printf("%lf\n", a + b); break;
        case '-':printf("%lf\n", a - b); break;
        case '*':printf("%lf\n", a*b); break;
        case '/':printf("%lf\n", a / b); break;
        default:printf("error!\n");
        }
        //printf("ok\n");
        */
以上程序在VC++6.0里运行是正常的,但是在VS2015中生成以后就不正常了,有如下提示,请亲们指点,按照warning提示我该怎么 修改呢,谢谢


1>f:\mycloud\myfiles\c\fishctest9\fishctest9\fishctest9.c(11): warning C4477: “scanf_s”: 格式字符串“%c”需要类型“unsigned int”的参数,但可变参数 3 拥有了类型“float *”
1>f:\mycloud\myfiles\c\fishctest9\fishctest9\fishctest9.c(11): note: 此参数用作缓冲区大小
1>f:\mycloud\myfiles\c\fishctest9\fishctest9\fishctest9.c(11): warning C4473: “scanf_s”: 没有为格式字符串传递足够的参数
1>f:\mycloud\myfiles\c\fishctest9\fishctest9\fishctest9.c(11): note: 占位符和其参数预计 4 可变参数,但提供的却是 3 参数
1>f:\mycloud\myfiles\c\fishctest9\fishctest9\fishctest9.c(11): note: 缺失的可变参数 4 为格式字符串“%f”所需
1>fishctest9.vcxproj -> F:\MyCloud\MyFiles\C\fishctest9\Debug\fishctest9.exe
1>fishctest9.vcxproj -> F:\MyCloud\MyFiles\C\fishctest9\Debug\fishctest9.pdb (Partial PDB)

ba21 发表于 2018-12-5 23:44:23

vc6 都没有scanf_s
也能正常???

yeoh 发表于 2018-12-6 00:08:52

ba21 发表于 2018-12-5 23:44
vc6 都没有scanf_s
也能正常???

当然,VC用的是scanf();    并不是scanf_s();

ba21 发表于 2018-12-6 14:49:28

yeoh 发表于 2018-12-6 00:08
当然,VC用的是scanf();    并不是scanf_s();

我还以为你那么有能奈vc用scanf_s()都行。

你看看scanf_s()的使用方法吧。

lemon3 发表于 2018-12-6 14:59:33

default最后也有break吧。
页: [1]
查看完整版本: 0基础入门C语言版本问题