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 }