gpt4 book ai didi

c - 在 char 中显示一个 int,并进行一些修改

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

我目前正在将 Csharp 程序转换为 Unix C。它运行良好,除了:

我有一个包含秒数的整数 (secs),出于美观原因,我想在前面显示零(1->01 等)。下面是我编写的代码,它有时有效,有时无效,具体取决于调用它的位置。我怀疑问题出在指针上。

char *st_str;
if(secs<10)
{
if(secs==0) st_str = "00";
else if(secs==1) st_str = "01";
else if(secs==2) st_str = "02";
else if(secs==3) st_str = "03";
else if(secs==4) st_str = "04";
else if(secs==5) st_str = "05";
else if(secs==6) st_str = "06";
else if(secs==7) st_str = "07";
else if(secs==8) st_str = "08";
else if(secs==9) st_str = "09";
}
else
{
sprintf(st_str,"%i",secs);
}

最佳答案

如果要sprintf()到st_str,就得给它分配内存。但是,您提供的代码绝对是多余的。为什么不直接使用 %02d 格式说明符?此外,sprintf() 通常被认为是不安全的,请改用 snprintf():

char st_str[3];
snprintf(st_str, sizeof(st_str), "%02d", secs);

请注意,如果您想从函数返回 st_str,则不能使用自动数组,而应该这样写

const size_t size = 3;
char *st_str = malloc(size);
snprintf(st_str, size, "%02d", secs);

关于c - 在 char 中显示一个 int,并进行一些修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13938615/

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