最近正在学习C语言,从课本上抄了一个用条件关系符实现大写字母转换小写字母的代码,不过运行结果不正确,不知道是哪里有问题。请大家帮看看,谢谢。
代码:
#include<stdio.h>
#include<math.h>
main()
{
char ch;
scanf_s(“%c”, &ch);
ch= (ch >= “A”&& ch <= “Z”) ? (ch +32 ) : ch;
printf(“%c\n”, ch);
}
运行结果应该是小写的a,不过得到的却是个?
用的软件是VS2015 community
代码:
#include<stdio.h>
#include<math.h>
main()
{
char ch;
scanf_s(“%c”, &ch);
ch= (ch >= “A”&& ch <= “Z”) ? (ch +32 ) : ch;
printf(“%c\n”, ch);
}
运行结果应该是小写的a,不过得到的却是个?
用的软件是VS2015 community
解决方案
10
不会用_s函数就用原版的函数,这里_s函数需要在传递一个参数
既然用VS2015不看提示么:
1>c:\users\dust\documents\visual studio 2015\projects\project2\test\main.c(5): warning C4473: “scanf_s”: 没有为格式字符串传递足够的参数
1> c:\users\dust\documents\visual studio 2015\projects\project2\test\main.c(5): note: 占位符和其参数预计 2 可变参数,但提供的却是 1 参数
1> c:\users\dust\documents\visual studio 2015\projects\project2\test\main.c(5): note: 缺失的可变参数 2 为格式字符串“%c”所需
1> c:\users\dust\documents\visual studio 2015\projects\project2\test\main.c(5): note: 此参数用作缓冲区大小
既然用VS2015不看提示么:
1>c:\users\dust\documents\visual studio 2015\projects\project2\test\main.c(5): warning C4473: “scanf_s”: 没有为格式字符串传递足够的参数
1> c:\users\dust\documents\visual studio 2015\projects\project2\test\main.c(5): note: 占位符和其参数预计 2 可变参数,但提供的却是 1 参数
1> c:\users\dust\documents\visual studio 2015\projects\project2\test\main.c(5): note: 缺失的可变参数 2 为格式字符串“%c”所需
1> c:\users\dust\documents\visual studio 2015\projects\project2\test\main.c(5): note: 此参数用作缓冲区大小
60
用scanf_s读%c和%s的时候,必须多传一个参数用来指定需要读入的长度
#include<stdio.h> #include<math.h> void main() { char ch; scanf_s("%c", &ch, 1); ch = (ch >= "A"&& ch <= "Z") ? (ch + 32) : ch; printf("%c\n", ch); }