From 134692fa85626742bbec8cb9a8aaed689806b74d Mon Sep 17 00:00:00 2001 From: fslongjin Date: Fri, 28 Jan 2022 14:33:54 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=8D=81?= =?UTF-8?q?=E5=85=AD=E8=BF=9B=E5=88=B6=E6=98=BE=E7=A4=BA=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=EF=BC=8C=E5=A1=AB=E5=85=85=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/common/printk.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/kernel/common/printk.c b/kernel/common/printk.c index ae7370b9..8e787cfd 100644 --- a/kernel/common/printk.c +++ b/kernel/common/printk.c @@ -402,9 +402,12 @@ static char *write_num(char *str, long long num, int base, int field_width, int if (flags & SMALL) digits = "0123456789abcdefghijklmnopqrstuvwxyz"; + if(flags&LEFT) + flags &= ~PAD_ZERO; // 设置填充元素 pad = (flags & PAD_ZERO) ? '0' : ' '; + sign = 0; if (flags & SIGN && num < 0) { @@ -448,9 +451,9 @@ static char *write_num(char *str, long long num, int base, int field_width, int field_width -= precision; // 靠右对齐 - if (!(flags & LEFT)) + if (!(flags & (LEFT+PAD_ZERO))) while (field_width-- > 0) - *str++ = pad; + *str++ = ' '; if (sign) *str++ = sign; @@ -462,7 +465,9 @@ static char *write_num(char *str, long long num, int base, int field_width, int } else if (base == 8) *str++ = digits[24]; //注意这里是英文字母O或者o - + if(!(flags&LEFT)) + while(field_width-->0) + *str++ = pad; while (js_num < precision) { --precision;