如何解决08报错:无效的八进制数字及printf()输出格式自定义方法
08无效错误的八进制号

显然,我们自己的语言与计算机不同。我们的想法是08和09,它是在小数数字之前添加零。这是一种自定义格式,但是计算机不了解人类语言,因此默认为0+。该数字被视为八进制
我们知道,八进制系统中不可能拥有8个或更多的数字,因此在编写程序时,发生以下错误:
图1
图2
当我们分配价值和输入时,我们无法表达“我们认为”所谓的十进制格式,我们应该从不同的角度实施它
从输入切换到printf()输出
我们实际上可以在我们自己中定义输出的格式
printf除占位符外,输出您写的任何内容
第一种方法很容易理解
方法:①在printf()中再尝试一个0
在修改图1的代码之后
图2代码相同
当然,此方法也有缺点。如果输入号是双数数字,则将变为018
如果您进行了另一次修改,则可以使用判断声明,如果该值为
让我们尝试if语句:
可以看出它有效!
②数字宽度
将%d更改为%0xD(这里x代表某个数字)以D为例:
其含义是数字的宽度为2(了解它是两个数字,D是三位数的数字,依此类推)
左输出的整数数量不足,使用0来弥补它。
因此,在图1和图2中的代码中,%d被D替换为d,i,f······
③使用字符串输出
通过定义字符串,我们输出所需的值,目前没有错误“ 08”
该方法也可以与图2中定义的结构混合。
#include
#include
struct date{
char month[4]; //将int month; 换成char month[4];
int day;
int year;
};
int main(int argc,char const *argv[])
{
struct date today = {"08",27,2022}; //以字符串""格式输入数值08
struct date thismonth = {"08",.year=2022};
printf("today's date is %i-%s-%i.\n",today.year,today.month,today.day);
printf("This month is %i-%s-%i\n",thismonth.year,thismonth.month,thismonth.day);
//记得将month所对应的%i改成此处的%s
system("pause");
return 0;
}
操作结果成功了!
结束添加:在第一个方法中输入多个数字时,您可以使用函数来解决多个IFS的混乱问题,这对于修改也很方便。
所以今天,您一无所获吗?
这是我在编程中遇到的问题。在当前学习阶段,已经总结了这三种方法。如果老板有更多的技能,则可以在评论区域留言或私人消息。让我们一起学习!