C++之scanf_s

#include <stdio.h>   //标准输入输出头文件,printf就是输出函数,只要函数有输入输出操作就需要包含此头文件。
#include<stdlib.h>   //标准库头文件,system是系统库
int main()  //一个源程序(即使有多个子文件,依然只能有一个main函数,否则编译提示重定义。)程序编译后,执行就是执行main里的逐行执行,直到return或右大括弧就结束了。
{//c++完全兼容c
	//上下文给出的提示可通过上下键定位,然后tab键键入
	printf("%s\n%s\n","Hello world!","zhao hengzhen");  //"\"是转义符,有了它之后,n就不再是n了,而是与转义符一起"\n"作为整体表示换行操作。
	//printf输出多个字符串,就用输出模板。("%d %d", charA,charB) d表示输入的类型,%是占位符。
	//此时显示为Hello worldl!
	//          请按任意键继续
	//getchar();//无参数,返回一个整数。语句执行到这一句就停止,等待键盘任意操作,然后继续往下执行。
	system("pause");//到这里会给出提示语句"请按任意键继续"。
	return 0;  //return红线说明前面语句缺少分号。
}


int main()
{
	int numb,r,abs;
	printf("请输入一个整数: ");
	r = scanf_s("%d", &numb);   //&取变量的内存地址,scanf(输入,保存地址)scanf不会检查输入是否符合变量定义的缓冲区大小,因此有可能内存泄漏。
	//而scanf_s对字符串的输入,需要边界参数,会检查有没有存储边界,则需要一般格式("%s",&numb,numb内存长度);非字符串输入不需要边界参数因此一般用scanf_s("%d",地址)就行了。
	//scanf_s是有返回值的,返回的是正确读入的参数的个数。因此可以进行预判。
	if (r == 1)
		{
		if (numb > 0) abs = numb;
		else abs = -numb;
		printf("numb的绝对值是:  %d\n", abs);
		}   //decimalism 十进制
	else printf("输入错误!\n");
	system("pause");
	//main();可以调用自身嵌套下去
	return 0;
}

int main()
{
	int a, b, c, v;
	int r;
	printf("请输入长宽高: \n");
	r = scanf_s("%d%d%d", &a, &b, &c);  
	/*scanf_s如果输入数值过程中遇到非法字符(如空格,回车)则默认一个输入数值完成;其他非法字符如逗号会直接报错;
	除此之外要严格按照""格式中进行输入,如"%d,%d"则scanf_s认为输入逗号时才算一个数值完成,否则认为输入错误。*/
	if (r == 3 && a>0 && b>0 && c>0)
		{
			v = volume(a, b, c);
			printf("长方体的体积为 %d\n",v);
		}
	else printf("error!\n");
	system("pause");
	return 0;
}

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值