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”的整型参数
希望能留下宝贵的建议
谢谢了 兄弟们 我知道是这么一回事了:
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 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;
} 你的自定义函数需要输出吗? 临时号 发表于 2022-8-11 22:56
scanf_s需要给出读多少字符
一个吧 你输出了吗? 康总 发表于 2022-8-12 08:23
一个吧
这要看你读多少字符,在你的代码中只需要读一个字符就可以了
还有,你的自定义函数只是返回了值,你没有输出啊 本帖最后由 康总 于 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;
}
您的意思是这样吗? 第36行要写成scanf_s("%c",&in,1); 本帖最后由 康总 于 2022-8-12 21:04 编辑
临时号 发表于 2022-8-12 20:54
第36行要写成scanf_s("%c",&in,1);
谢谢兄弟,确实可以
但为什么不管我输入什么它都是返回none呢?
而且想问一下:那个1是什么意思? #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;
} 康总 发表于 2022-8-12 21:03
谢谢兄弟,确实可以
但为什么不管我输入什么它都是返回none呢?
而且想问一下:那个1是什么意思?
1是scanf_c的参数个数啊 ExiaGN001 发表于 2022-8-13 16:49
#include
char* getward(char c);
你的scanf在VS上是会警告的 康总 发表于 2022-8-12 21:03
谢谢兄弟,确实可以
但为什么不管我输入什么它都是返回none呢?
而且想问一下:那个1是什么意思?
1是被赋值的in的长度,可以改的,vs麻烦的就是这些。如果不这样输入的话可以在程序前加一项预处理命令#define _CRT_SECURE_NO_WARNINGS 1 {:10_254:} 康总 发表于 2022-8-14 09:20
你的scanf在VS上是会警告的
总所周知,代码和人有一个能跑就行。(doge
页:
[1]