2016-10-01 66 views
1

我有我的LCD在我的TM4C123上工作,我有printf工作。定點十進制printf輸出

我試圖使左列的輸入看起來像來自右列的輸出。

我試過的是從整數中提取每個數字,然後打印出來,然後把小數點放在那裏。當我提取數字時,該符號似乎與數字保持一致,而我似乎無法將其格式化爲正確。

outTestCaseType1 outTests1[13]={ 
{  0, " = 0.000?\r" }, //  0/1000 = 0.000 
{  4, " = 0.004?\r" }, //  4/1000 = 0.004 
{ -5, " = -0.005?\r" }, // -5/1000 = -0.005 
{ 78, " = 0.078?\r" }, // 78/1000 = 0.078 
{ -254, " = -0.254?\r" }, // -254/1000 = -0.254 
{ 999, " = 0.999?\r" }, // 999/1000 = 0.999 
{ -1000, " = -1.000?\r" }, // -1000/1000 = -1.000 
{ 1234, " = 1.234?\r" }, // 1234/1000 = 1.234 
{ -5678, " = -5.678?\r" }, // -5678/1000 = -5.678 
{ -9999, " = -9.999?\r" }, // -9999/1000 = -9.999 
{ 9999, " = 9.999?\r" }, // 9999/1000 = 9.999 
{ 10000, " = *.***?\r" }, // error 
{-10000, " = *.***?\r" } // error 
}; 

我的代碼如下:

void ST7735_sDecOut3(int32_t n) { 
    int32_t msd,nsd, lsd; 
    int32_t value; 
    value=n; 
if (value > 999) 
{ 
    value = 999; 
} 

msd = value/100; 
value -= msd * 100; 

nsd = value/10; 
value -= nsd * 10; 

lsd = value; 

printf("%d%d%d", msd, nsd, lsd); 

} 

輸出是在液晶顯示屏上,如下所示:

enter image description here

我在此採摘,就像我可以和這跟我到目前爲止一樣接近。由於我的經驗不足,我可能會看到一種更簡單的方法,但我會繼續努力,因爲這就是我所能做到的。

任何提示或幫助將不勝感激。

回答

0

這不使用您的數據結構或類型,但可以隨時適應匹配。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(void) 
{ 
    int values[] = { 0, 4, -5, 78, -254, 999, -1000, 1234, -5678, -9999, +9999, 10000, -10000 }; 
    enum { NUM_VALUES = sizeof(values)/sizeof(values[0]) }; 

    for (int i = 0; i < NUM_VALUES; i++) 
    { 
     int32_t value = values[i]; 
     char integer[2]; 
     char fraction[4]; 
     int f_part = abs(value) % 1000; 
     int i_part = abs(value)/1000; 
     char sign = ' '; 
     if (abs(value) > 9999) 
     { 
      strcpy(integer, "*"); 
      strcpy(fraction, "***"); 
     } 
     else 
     { 
      if (value < 0) 
       sign = '-'; 
      sprintf(integer, "%d", i_part); 
      sprintf(fraction, "%.3d", f_part); 
     } 
     printf("%6d: = %c%s.%s?\\r\n", value, sign, integer, fraction); 
    } 
    return 0; 
} 

輸出示例:

 0: = 0.000?\r 
    4: = 0.004?\r 
    -5: = -0.005?\r 
    78: = 0.078?\r 
    -254: = -0.254?\r 
    999: = 0.999?\r 
-1000: = -1.000?\r 
    1234: = 1.234?\r 
-5678: = -5.678?\r 
-9999: = -9.999?\r 
    9999: = 9.999?\r 
10000: = *.***?\r 
-10000: = *.***?\r 
相關問題