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

標題: C語言結(jié)構(gòu)體里面的整形數(shù)據(jù)是否可以轉(zhuǎn)換為字符串輸出呢? [打印本頁]

作者: xda    時間: 2020-3-26 13:05
標題: C語言結(jié)構(gòu)體里面的整形數(shù)據(jù)是否可以轉(zhuǎn)換為字符串輸出呢?
在調(diào)rtc的時候遇到了結(jié)構(gòu)體,由于oled在顯示個位數(shù)字的時候不能自動在前面補零,所以我想到使用sprintf函數(shù)轉(zhuǎn)換數(shù)據(jù)補零,但是實際上,在使用sprintf函數(shù)以后,
程序就死在sprintf函數(shù)這里了,很是苦惱,有大佬知道這類結(jié)構(gòu)體數(shù)據(jù)應(yīng)該如何轉(zhuǎn)換顯示嗎


//年(24) 月(25) 日(26) 時(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); //我只實驗了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);//時
        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);        //秒



作者: moluxiyan    時間: 2020-3-26 14:51
char year[20];
sprintf(year,"%d",time.tm_year )
作者: xda    時間: 2020-3-26 20:08
moluxiyan 發(fā)表于 2020-3-26 14:51
char year[20];
sprintf(year,"%d",time.tm_year )

這種的我也嘗試過了,這一種的在調(diào)用的時候會在oled函數(shù)上報錯
..\main.c(133): error:  #167: argument of type "char *" is incompatible with parameter of type "u32"
如果給oled顯示變量改為數(shù)組形式,顯示又不對了呢,可能是我程序?qū)懨闪耍恢辈幻靼诪槭裁矗@個錯誤我再之前嘗試的時候有出現(xiàn),按照百度的修改好像也無濟于事,現(xiàn)在腦闊真的有點嗡嗡的
作者: moluxiyan    時間: 2020-3-27 09:12
xda 發(fā)表于 2020-3-26 20:08
這種的我也嘗試過了,這一種的在調(diào)用的時候會在oled函數(shù)上報錯
..\main.c(133): error:  #167: argument ...

char* year; 沒有指向任何內(nèi)存,直接使用肯定會出錯
作者: 黃youhui    時間: 2020-3-27 10:47
xda 發(fā)表于 2020-3-26 20:08
這種的我也嘗試過了,這一種的在調(diào)用的時候會在oled函數(shù)上報錯
..\main.c(133): error:  #167: argument ...

uint8_t year【20】;
sprintf(year,"%d",tim.tm_year);
你的time時一個tm結(jié)構(gòu)體類型的變量,里面有多少變量我不知道,但是你time = Time_FetCalendarTie();什么意思?Time_FetCalendarTie()返回值是結(jié)構(gòu)體變量類型嗎?
作者: xda    時間: 2020-3-27 12:16
黃youhui 發(fā)表于 2020-3-27 10:47
uint8_t year【20】;
sprintf(year,"%d",tim.tm_year);
你的time時一個tm結(jié)構(gòu)體類型的變量,里面有多 ...

/*******************************************************************************
* Function Name  : Time_GetCalendarTime
* Description    : 從RTC取當前時間的日歷時間(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;
}

這個是哪個函數(shù)的全部,里面返回的是結(jié)構(gòu)體的數(shù)據(jù)
作者: xda    時間: 2020-3-27 12:20
黃youhui 發(fā)表于 2020-3-27 10:47
uint8_t year【20】;
sprintf(year,"%d",tim.tm_year);
你的time時一個tm結(jié)構(gòu)體類型的變量,里面有多 ...

time = Time_FetCalendarTie()
這一句按照我的原話應(yīng)該是 time = Time_GetCalendarTime();
這一句是獲取時間的
作者: 黃youhui    時間: 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

作者: f556    時間: 2020-3-27 15:36
昨天改了一下幾年前寫的轉(zhuǎn)換函數(shù) *Long2Str,原理是把Long拆位,每位存入一個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ù)
估計得用此方法
作者: xda    時間: 2020-3-28 10:56
黃youhui 發(fā)表于 2020-3-27 13:13
我用st7541  128128液晶屏顯示函數(shù),

嘗試了一下,還是要報錯。。。編譯不通過




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1