康总 发表于 2022-8-11 22:46:17

VS代码

#include<stdio.h>

char* getward(char c);
char* getward(char c) {

        switch(c)
        {
        case 'A':return (char*)"apple"; break;
        case 'B':return (char*)"banana"; break;
        case 'C':return (char*)"cat"; break;
        case 'D':return (char*)"dog"; break;
        case 'E':return (char*)"elephant"; break;
        default:return (char*)"none";
        }


}



int main() {

       char in;

        printf("请输入一个大写字母:");
        scanf_s("%c",&in);

        getward(in);

        return 0;
}


报错的地方是main函数体下scanf_s的那一行,原因:
缺少“scanf_s”的整型参数


希望能留下宝贵的建议
谢谢了

康总 发表于 2022-8-14 21:27:33

兄弟们 我知道是这么一回事了:

        scanf_s("%c", &in, 1);

代码要这么去写 VS才不会报错
原因:
C Primer Plus 中的解释是这样的:%c指明待打印的字符
而且书中给的例子是也是用在scanf函数
%c格式对应的是单个字符,%s格式对应的是字符串。

如果将例子中的getward函数里面的switch语句中的条件改成这样
char* getward(char c);
char* getward(char c) {

        switch (c)
        {
        case 'Aa':return (char*)"apple";
        case 'Bb':return (char*)"banana";
        case 'Cc':return (char*)"cat";
        case 'Dd':return (char*)"dog";
        case 'Ee':return (char*)"elephant";
        default:return (char*)"none";

        }

}

再加上这条,这样写代码也能运行
scanf_s("%s", in);

但这里并不推荐这样写 因为VS会报错{:10_266:}

最后,十分感谢回复帖子的鱼油们
让我们共同进步 加油!!!{:10_254:}{:10_254:}

临时号 发表于 2022-8-11 22:56:30

本帖最后由 临时号 于 2022-8-11 23:30 编辑

scanf_s需要给出读多少字符
#include<stdio.h>

char* getward(char c);
char* getward(char c) {

      switch(c)
      {
      case 'A':return (char*)"apple"; break;
      case 'B':return (char*)"banana"; break;
      case 'C':return (char*)"cat"; break;
      case 'D':return (char*)"dog"; break;
      case 'E':return (char*)"elephant"; break;
      default:return (char*)"none";
      }


}



int main() {

         char in;

      printf("请输入一个大写字母:");
      scanf_s("%c",&in,1);

      getward(in);

      return 0;
}

aaron0919 发表于 2022-8-12 07:00:52

你的自定义函数需要输出吗?

康总 发表于 2022-8-12 08:23:17

临时号 发表于 2022-8-11 22:56
scanf_s需要给出读多少字符

一个吧

liuzhengyuan 发表于 2022-8-12 10:55:58

你输出了吗?

临时号 发表于 2022-8-12 10:59:14

康总 发表于 2022-8-12 08:23
一个吧

这要看你读多少字符,在你的代码中只需要读一个字符就可以了
还有,你的自定义函数只是返回了值,你没有输出啊

康总 发表于 2022-8-12 20:41:26

本帖最后由 康总 于 2022-8-12 20:55 编辑

临时号 发表于 2022-8-12 10:59
这要看你读多少字符,在你的代码中只需要读一个字符就可以了
还有,你的自定义函数只是返回了值,你没有输 ...

#include<stdio.h>

char* getward(char c);
char* getward(char c) {

        switch(c)
        {
        case 'A':return (char*)"apple"; break;
        case 'B':return (char*)"banana"; break;
        case 'C':return (char*)"cat"; break;
        case 'D':return (char*)"dog"; break;
        case 'E':return (char*)"elephant"; break;
        default:return (char*)"none";


       
        }


}



int main() {

       char in;

        printf("请输入一个大写字母:");
        scanf_s("%c",&in);

        printf("%s", getward(in));

        return 0;
}
您的意思是这样吗?

临时号 发表于 2022-8-12 20:54:25

第36行要写成scanf_s("%c",&in,1);

康总 发表于 2022-8-12 21:03:38

本帖最后由 康总 于 2022-8-12 21:04 编辑

临时号 发表于 2022-8-12 20:54
第36行要写成scanf_s("%c",&in,1);

谢谢兄弟,确实可以
但为什么不管我输入什么它都是返回none呢?
而且想问一下:那个1是什么意思?

ExiaGN001 发表于 2022-8-13 16:49:43

#include<stdio.h>

char* getward(char c);
char* getward(char c) {
      switch(c)
      {
      case 'A':return (char*)"apple"; break;
      case 'B':return (char*)"banana"; break;
      case 'C':return (char*)"cat"; break;
      case 'D':return (char*)"dog"; break;
      case 'E':return (char*)"elephant"; break;
      default:return (char*)"none";
      }
}

int main() {
      char in;
      printf("请输入一个大写字母:");
      scanf("%c",&in);//改成了scanf
      getward(in);
      return 0;
}

ExiaGN001 发表于 2022-8-13 16:50:19

康总 发表于 2022-8-12 21:03
谢谢兄弟,确实可以
但为什么不管我输入什么它都是返回none呢?
而且想问一下:那个1是什么意思?

1是scanf_c的参数个数啊

康总 发表于 2022-8-14 09:20:27

ExiaGN001 发表于 2022-8-13 16:49
#include

char* getward(char c);


你的scanf在VS上是会警告的

lin5720qwq 发表于 2022-8-14 17:33:34

康总 发表于 2022-8-12 21:03
谢谢兄弟,确实可以
但为什么不管我输入什么它都是返回none呢?
而且想问一下:那个1是什么意思?

1是被赋值的in的长度,可以改的,vs麻烦的就是这些。如果不这样输入的话可以在程序前加一项预处理命令#define _CRT_SECURE_NO_WARNINGS 1 {:10_254:}

ExiaGN001 发表于 2022-8-14 19:46:57

康总 发表于 2022-8-14 09:20
你的scanf在VS上是会警告的

总所周知,代码和人有一个能跑就行。(doge
页: [1]
查看完整版本: VS代码