草庐IT

scanf 与 printf 输入输出函数

格式化输入输出函数所谓格式化输入输出,就是不再如同上一节介绍的函数那样,都是单纯地输入输出一个字符或者一行文字。格式化输入输出,就是要将各种类型数据(包括整型、浮点型以及字符串等类型的常量或变量),混合在一起进行输入输出。在C语言中格式化输入函数主要使用scanf(或scanf_s)函数,格式化输出函数主要是printf函数。格式化输入输出函数,能够对各种类型的数据混合地输入输出,主要是依靠一个格式控制字符串来实现的。在格式控制字符串内通过%符号加字母,对输入输出的目标数据的类型进行预先标明。控制字符串内的%符号后面的字母,我们称之为输入输出控制符。控制字符串内的每一个控制符,在控制字符串后面

C++算法之旅、01 入门篇

使用胡凡主编的《算法笔记》教材。题目均为第三章题目。TEST//ProblemAddress#define_CRT_SECURE_NO_WARNINGS#includeintmain(){return0;}PAT_B10013n+1//https://pintia.cn/problem-sets/994805260223102976/exam/problems/994805325918486528#includeintmain(){intsteps=0,n;scanf("%d",&n);while(n!=1){if(n%2==0){n/=2;}else{n=(3*n+1)/2;}steps++

C++算法之旅、01 入门篇

使用胡凡主编的《算法笔记》教材。题目均为第三章题目。TEST//ProblemAddress#define_CRT_SECURE_NO_WARNINGS#includeintmain(){return0;}PAT_B10013n+1//https://pintia.cn/problem-sets/994805260223102976/exam/problems/994805325918486528#includeintmain(){intsteps=0,n;scanf("%d",&n);while(n!=1){if(n%2==0){n/=2;}else{n=(3*n+1)/2;}steps++

升级 MDK 5.37 后的问题处理: AC6编译选项, printf, 重启失效等

烧录后ResetAndRun重启失效存在于MDKARM5.28之后包括5.37的版本.这些版本即使勾选ResetAndRun,在烧录后也不会自动重启执行需要做以下设置Debug->ST-LinkDebugger->Settings切换到Pack标签页,取消勾选Enable点击OK保存参考:https://community.arm.com/support-forums/f/keil-forum/44063/mdk-arm-5-28-problem-with-reset-and-run/159946编译器版本判断失效不能再通过__GNUC__判断是否为gnuarmgcctoolchain,因为A

升级 MDK 5.37 后的问题处理: AC6编译选项, printf, 重启失效等

烧录后ResetAndRun重启失效存在于MDKARM5.28之后包括5.37的版本.这些版本即使勾选ResetAndRun,在烧录后也不会自动重启执行需要做以下设置Debug->ST-LinkDebugger->Settings切换到Pack标签页,取消勾选Enable点击OK保存参考:https://community.arm.com/support-forums/f/keil-forum/44063/mdk-arm-5-28-problem-with-reset-and-run/159946编译器版本判断失效不能再通过__GNUC__判断是否为gnuarmgcctoolchain,因为A

C语言简易计算器

#inlcudeintmain(){printf("\t简易计算器\n1、加法\n2、减法\n3、乘法\n4、除法\n请输入你的选择:"); intc;//用if语句来决定这是什么运算 floata,b;//定义两个变量 scanf("%d",&c);//获取c的值 if(c==1){ printf("a的值为:"); scanf("%f",&a); printf("b的值为:"); scanf("%f",&b); printf("a+b的值为%.2f",a+b); getchar(); }//加法的运算 elseif(c==2){ printf("a的值为:"); scanf

C语言简易计算器

#inlcudeintmain(){printf("\t简易计算器\n1、加法\n2、减法\n3、乘法\n4、除法\n请输入你的选择:"); intc;//用if语句来决定这是什么运算 floata,b;//定义两个变量 scanf("%d",&c);//获取c的值 if(c==1){ printf("a的值为:"); scanf("%f",&a); printf("b的值为:"); scanf("%f",&b); printf("a+b的值为%.2f",a+b); getchar(); }//加法的运算 elseif(c==2){ printf("a的值为:"); scanf

微光互联 TX800-U 扫码器无法输出中文到光标的问题

问题背景某检测场有一批扫码器,购于微光互联,型号TX800-U,用于在不同办理窗口间扫描纸质材料上的二维码,简化录入过程。扫码器通过USB接入PC系统(windows),自动安装驱动,接电即可使用,扫描的信息会直接输出在光标所在位置,扫码器大概长这样:问题现象在一次IT系统升级后,发现它们扫描不了车辆外观检验单上的车牌二维码了,扫车架号二维码是没问题的,两者的区别就是是否带汉字,车牌第一个字符为地区标识,例如“京”,而车架号全部由数字和大写字母组成。拿到设备后,第一时间验证了上面的问题,扫码后都有滴的一声,但是车牌号没有任何信息上屏。为了验证这个问题确实和汉字有关,找到一个制造二维码的网站(草

微光互联 TX800-U 扫码器无法输出中文到光标的问题

问题背景某检测场有一批扫码器,购于微光互联,型号TX800-U,用于在不同办理窗口间扫描纸质材料上的二维码,简化录入过程。扫码器通过USB接入PC系统(windows),自动安装驱动,接电即可使用,扫描的信息会直接输出在光标所在位置,扫码器大概长这样:问题现象在一次IT系统升级后,发现它们扫描不了车辆外观检验单上的车牌二维码了,扫车架号二维码是没问题的,两者的区别就是是否带汉字,车牌第一个字符为地区标识,例如“京”,而车架号全部由数字和大写字母组成。拿到设备后,第一时间验证了上面的问题,扫码后都有滴的一声,但是车牌号没有任何信息上屏。为了验证这个问题确实和汉字有关,找到一个制造二维码的网站(草

跨平台(32bit和64bit)的 printf 格式符 %lld 输出64位的解决方式

问题描述在C/C++开发中,使用printf打印64位变量比较常用,通常在32位系统中使用%lld输出64位的变量,而在64位系统中则使用%ld;如果在32位系统中使用%ld输出64位变量,很可能打印的值是异常的,而在64位系统中则使用%lld,则通常会出现编译报错,类似如:format'%lld'expectstype'longlongint',butargument4hastype'int64_t'[-Werror=format=]如果在跨平台移植代码时,通常就会遇到这种情况。解决方案为了解决跨平台移植的问题,%PRId64的书写方式解决了跨平台的问题,主要是为了同时支持32位和64位操作