gpt4 book ai didi

c - 如何用前导零填充整数打印?

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:19 24 4
gpt4 key购买 nike

所以我必须制作有点像计时器的东西,它必须是一个字符串,如果它小于 10,它前面必须有一个 0,比如 00,01,02...09,10,11 等等数字是 2 位数字。但是我遇到了一个问题,我似乎无法解决它。我需要让它有点像没有 ctime 或根本不把它变成一个字符串。

我也用反编译器工具试过几次,但我发现主要问题在位置 4 和 7。我认为代码块编译器可能有问题,但我不太确定.

#include <stdio.h>

int main(){
char tostring[9]={};
int timer=6588;
int hours=0;
int minutes=0;
int seconds=0;

hours=timer/3600;
minutes=(timer%3600)/60;
seconds=(timer%3600)%60;
//printf("%i:%i:%i",hours,minutes,seconds);

if(hours<10){
tostring[0]=(char)0;
tostring[1]=(char)hours;
}else{
tostring[0]=(char)(hours/10);
tostring[1]=(char)(hours%10);
}
tostring[2]=':';
if(minutes<10){
tostring[3]=(char)0;
tostring[4]=(char)minutes;
}else{
tostring[3]=(char)(minutes/10);
tostring[4]=(char)(minutes%10);
}
tostring[5]=':';
if(seconds<10){
tostring[6]=(char)0;
tostring[7]=(char)seconds;
}else{
tostring[6]=(char)(seconds/10);
tostring[7]=(char)(seconds%10);
}
tostring[8]='\0';
printf("%s",tostring);
return 0;
}

我希望输出是 01:49:48,但什么也没有,只有空白。解决这个问题的方法是什么。

最佳答案

tostring[0]=(char)0; 不会将0的字符表示写入tostring[0]。它写了一个零。你想要 tostring[0] = '0',带单引号。同样,要写一个数字的字符表示,可以写成tostring[1] = '0' + hours(如果hours是5,那么'0' + 5就是使用的字符值在本地字符集中表示 5。值得庆幸的是,这些表示应该是连续的,因此很久以前就已经标准化了,这样就可以了。)但是,除非本练习的目的是避免使用 printf ,你真的应该只使用 printf。

关于c - 如何用前导零填充整数打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55953955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com