C++之scanf_s

 1 #include <stdio.h>   //标准输入输出头文件,printf就是输出函数,只要函数有输入输出操作就需要包含此头文件。
 2 #include<stdlib.h>   //标准库头文件,system是系统库
 3 int main()  //一个源程序(即使有多个子文件,依然只能有一个main函数,否则编译提示重定义。)程序编译后,执行就是执行main里的逐行执行,直到return或右大括弧就结束了。
 4 {//c++完全兼容c
 5     //上下文给出的提示可通过上下键定位,然后tab键键入
 6     printf("%s\n%s\n","Hello world!","zhao hengzhen");  //"\"是转义符,有了它之后,n就不再是n了,而是与转义符一起"\n"作为整体表示换行操作。
 7     //printf输出多个字符串,就用输出模板。("%d %d", charA,charB) d表示输入的类型,%是占位符。
 8     //此时显示为Hello worldl!
 9     //          请按任意键继续
10     //getchar();//无参数,返回一个整数。语句执行到这一句就停止,等待键盘任意操作,然后继续往下执行。
11     system("pause");//到这里会给出提示语句"请按任意键继续"。
12     return 0;  //return红线说明前面语句缺少分号。
13 }
14 
15 
16 int main()
17 {
18     int numb,r,abs;
19     printf("请输入一个整数: ");
20     r = scanf_s("%d", &numb);   //&取变量的内存地址,scanf(输入,保存地址)scanf不会检查输入是否符合变量定义的缓冲区大小,因此有可能内存泄漏。
21     //而scanf_s对字符串的输入,需要边界参数,会检查有没有存储边界,则需要一般格式("%s",&numb,numb内存长度);非字符串输入不需要边界参数因此一般用scanf_s("%d",地址)就行了。
22     //scanf_s是有返回值的,返回的是正确读入的参数的个数。因此可以进行预判。
23     if (r == 1)
24         {
25         if (numb > 0) abs = numb;
26         else abs = -numb;
27         printf("numb的绝对值是:  %d\n", abs);
28         }   //decimalism 十进制
29     else printf("输入错误!\n");
30     system("pause");
31     //main();可以调用自身嵌套下去
32     return 0;
33 }
34 
35 int main()
36 {
37     int a, b, c, v;
38     int r;
39     printf("请输入长宽高: \n");
40     r = scanf_s("%d%d%d", &a, &b, &c);  
41     /*scanf_s如果输入数值过程中遇到非法字符(如空格,回车)则默认一个输入数值完成;其他非法字符如逗号会直接报错;
42     除此之外要严格按照""格式中进行输入,如"%d,%d"则scanf_s认为输入逗号时才算一个数值完成,否则认为输入错误。*/
43     if (r == 3 && a>0 && b>0 && c>0)
44         {
45             v = volume(a, b, c);
46             printf("长方体的体积为 %d\n",v);
47         }
48     else printf("error!\n");
49     system("pause");
50     return 0;
51 }

 

posted @ 2019-12-07 17:58  Parallax  阅读(1085)  评论(0编辑  收藏  举报