欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3619|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

C語(yǔ)言結(jié)構(gòu)體里面的整形數(shù)據(jù)是否可以轉(zhuǎn)換為字符串輸出呢?

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 2 黑幣 回復(fù)本帖可獲得 2 黑幣獎(jiǎng)勵(lì)! 每人限 2 次
跳轉(zhuǎn)到指定樓層
樓主
在調(diào)rtc的時(shí)候遇到了結(jié)構(gòu)體,由于oled在顯示個(gè)位數(shù)字的時(shí)候不能自動(dòng)在前面補(bǔ)零,所以我想到使用sprintf函數(shù)轉(zhuǎn)換數(shù)據(jù)補(bǔ)零,但是實(shí)際上,在使用sprintf函數(shù)以后,
程序就死在sprintf函數(shù)這里了,很是苦惱,有大佬知道這類結(jié)構(gòu)體數(shù)據(jù)應(yīng)該如何轉(zhuǎn)換顯示嗎


//年(24) 月(25) 日(26) 時(shí)(27) 分(28) 秒(29) 星(30) 期(31)
        struct tm time;
        time = Time_GetCalendarTime();
        char* year;
        sprintf(year,"%d",time.tm_year );
//        printf(year,"Time: %d-%d-%d   %02d:%02d:%02d \r\n", time.tm_year );
        OLED_ShowNum(8,2,*year,4,16,1); //我只實(shí)驗(yàn)了year,如果不使用sprintf函數(shù)程序是正常的
        OLED_ShowCHinese(48,2,24);//年
        OLED_ShowNum(64,2,time.tm_mon+1,2,16,1);
        OLED_ShowCHinese(80,2,25);//月
        OLED_ShowNum(96,2,time.tm_mday,2,16,1);
        OLED_ShowCHinese(112,2,26);//日
        OLED_ShowNum(16,6,time.tm_hour,2,16,1);
        OLED_ShowCHinese(32,6,27);//時(shí)
        OLED_ShowNum(48,6,time.tm_min,2,16,1);
        OLED_ShowCHinese(64,6,28);        //分
        OLED_ShowNum(80,6,time.tm_sec,2,16,1);
        OLED_ShowCHinese(96,6,29);        //秒


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:470332 發(fā)表于 2020-3-26 14:51 | 只看該作者
char year[20];
sprintf(year,"%d",time.tm_year )
回復(fù)

使用道具 舉報(bào)

板凳
ID:248659 發(fā)表于 2020-3-26 20:08 | 只看該作者
moluxiyan 發(fā)表于 2020-3-26 14:51
char year[20];
sprintf(year,"%d",time.tm_year )

這種的我也嘗試過(guò)了,這一種的在調(diào)用的時(shí)候會(huì)在oled函數(shù)上報(bào)錯(cuò)
..\main.c(133): error:  #167: argument of type "char *" is incompatible with parameter of type "u32"
如果給oled顯示變量改為數(shù)組形式,顯示又不對(duì)了呢,可能是我程序?qū)懨闪耍恢辈幻靼诪槭裁矗@個(gè)錯(cuò)誤我再之前嘗試的時(shí)候有出現(xiàn),按照百度的修改好像也無(wú)濟(jì)于事,現(xiàn)在腦闊真的有點(diǎn)嗡嗡的
回復(fù)

使用道具 舉報(bào)

地板
ID:470332 發(fā)表于 2020-3-27 09:12 | 只看該作者
xda 發(fā)表于 2020-3-26 20:08
這種的我也嘗試過(guò)了,這一種的在調(diào)用的時(shí)候會(huì)在oled函數(shù)上報(bào)錯(cuò)
..\main.c(133): error:  #167: argument ...

char* year; 沒(méi)有指向任何內(nèi)存,直接使用肯定會(huì)出錯(cuò)
回復(fù)

使用道具 舉報(bào)

5#
ID:592807 發(fā)表于 2020-3-27 10:47 | 只看該作者
xda 發(fā)表于 2020-3-26 20:08
這種的我也嘗試過(guò)了,這一種的在調(diào)用的時(shí)候會(huì)在oled函數(shù)上報(bào)錯(cuò)
..\main.c(133): error:  #167: argument ...

uint8_t year【20】;
sprintf(year,"%d",tim.tm_year);
你的time時(shí)一個(gè)tm結(jié)構(gòu)體類型的變量,里面有多少變量我不知道,但是你time = Time_FetCalendarTie();什么意思?Time_FetCalendarTie()返回值是結(jié)構(gòu)體變量類型嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:248659 發(fā)表于 2020-3-27 12:16 | 只看該作者
黃youhui 發(fā)表于 2020-3-27 10:47
uint8_t year【20】;
sprintf(year,"%d",tim.tm_year);
你的time時(shí)一個(gè)tm結(jié)構(gòu)體類型的變量,里面有多 ...

/*******************************************************************************
* Function Name  : Time_GetCalendarTime
* Description    : 從RTC取當(dāng)前時(shí)間的日歷時(shí)間(struct tm)
* Input          : None
* Output         : None
* Return         : struct tm
* Attention                 : None
*******************************************************************************/
struct tm Time_GetCalendarTime(void)
{
        time_t t_t;
        struct tm t_tm;

        t_t = (time_t)RTC_GetCounter();
        t_tm = Time_ConvUnixToCalendar(t_t);
        return t_tm;
}

這個(gè)是哪個(gè)函數(shù)的全部,里面返回的是結(jié)構(gòu)體的數(shù)據(jù)
回復(fù)

使用道具 舉報(bào)

7#
ID:248659 發(fā)表于 2020-3-27 12:20 | 只看該作者
黃youhui 發(fā)表于 2020-3-27 10:47
uint8_t year【20】;
sprintf(year,"%d",tim.tm_year);
你的time時(shí)一個(gè)tm結(jié)構(gòu)體類型的變量,里面有多 ...

time = Time_FetCalendarTie()
這一句按照我的原話應(yīng)該是 time = Time_GetCalendarTime();
這一句是獲取時(shí)間的
回復(fù)

使用道具 舉報(bào)

8#
ID:592807 發(fā)表于 2020-3-27 13:13 | 只看該作者
xda 發(fā)表于 2020-3-27 12:20
time = Time_FetCalendarTie()
這一句按照我的原話應(yīng)該是 time = Time_GetCalendarTime();
這一句是 ...

我用st7541  128128液晶屏顯示函數(shù),

TH.png (5.18 KB, 下載次數(shù): 28)

st7451 8080

st7451 8080
回復(fù)

使用道具 舉報(bào)

9#
ID:282850 發(fā)表于 2020-3-27 15:36 | 只看該作者
昨天改了一下幾年前寫(xiě)的轉(zhuǎn)換函數(shù) *Long2Str,原理是把Long拆位,每位存入一個(gè)Dat[i]中,返回Dat[]的指針。顯示函數(shù)是接收字符串再拆分顯示的。LCD_0816Print(uchar x,uchar y, char *dat),所以Long也就可以順利顯示了。
LCD_0816Print(1,5,"ABCD0345");
LCD_0816Print(3,5,Long2Str(3298784,4));    最后的4是小數(shù)的位數(shù)
估計(jì)得用此方法
回復(fù)

使用道具 舉報(bào)

10#
ID:248659 發(fā)表于 2020-3-28 10:56 | 只看該作者
黃youhui 發(fā)表于 2020-3-27 13:13
我用st7541  128128液晶屏顯示函數(shù),

嘗試了一下,還是要報(bào)錯(cuò)。。。編譯不通過(guò)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表