C語言將資料表輸出到終端

拳拳小布發表於2021-01-05

目錄

 

為什麼要寫這篇

函式實現思路(虛擬碼)

函式實現及測試程式

一點兒認識


為什麼要寫這篇

本來只是想寫輸出到文字文件,但後來覺得還有一種輸出方式,輸出到終端,雖然相比輸出到文字文件認為要簡單一些,但還是實現一下吧。

最終的效果圖如下,函式的引數傳入與輸出到文字文件函式一樣:陣列首地址,陣列大小,以及列數。C語言將資料表輸出到文字文件

函式實現思路(虛擬碼)

函式實現及測試程式

該程式可在菜鳥C線上工具中執行

#include <stdio.h>
#include <stdint.h>


#define ARRAY_SIZE      101

const uint16_t motor_ntc_mV_array[ARRAY_SIZE] = 
{ 
    453,    472,    492,    513,    534,    556,    579,    602,    626,   651,
    676,    701,    728,    754,    782,    809,    838,    867,    896,   926,
    956,    987,    1018,   1049,   1081,   1114,   1146,   1179,   1212,  1245,
    1278,   1312,   1346,   1379,   1413,   1447,   1481,   1515,   1549,  1582,
    1616,   1649,   1682,   1715,   1748,   1781,   1813,   1845,   1877,  1908,
    1939,   1970,   2000,   2030,   2059,   2088,   2116,   2145,   2172,  2200,
    2226,   2252,   2278,   2303,   2328,   2352,   2376,   2399,   2422,  2444,
    2466,   2488,   2508,   2529,   2549,   2568,   2587,   2606,   2624,  2642,
    2659,   2676,   2692,   2708,   2723,   2738,   2753,   2768,   2782,  2795,
    2809,   2821,   2834,   2847,   2858,   2870,   2881,   2892,   2903,  2913,
    2923
};

void table_to_terminal(uint16_t* array, uint16_t num, uint8_t column);

/**
 * table_to_terminal
 * @brief   將資料表輸出到終端
 * @param   array 引數描述: 陣列首地址
 * @param   num 引數描述: 陣列元素個數
 * @param   column 引數描述: 要輸出為幾列
 */
void table_to_terminal(uint16_t* array, uint16_t num, uint8_t column)
{
    printf("const uint16_t motor_ntc_mV_array[%d] = \n", num);      ///< 此處可更改
    printf("{ \n");

    for(uint8_t i = 0; i < num; i++)
    {
        if(i != (num-1))
        {
            printf("\t%d,", array[i]);
        }else
        {
            printf("\t%d", array[num-1]);
        }

        if(i % column == (column-1))
        {
            printf("\n");
        }
        if(i == (num - 1))
        {
            printf("\n");
            printf("}");
            printf(";");  ///< ; 需單獨輸出
            printf("\n");
        }
    }
}

int main(void)
{
    table_to_terminal(&motor_ntc_mV_array[0], sizeof(motor_ntc_mV_array)/sizeof(motor_ntc_mV_array[0]), 7);

    return 0;
}

一點兒認識

兩者的不足之處是資料表頭需要更改函式內部語句,對於封裝為一個函式來說,這是很讓人不爽的事情,目前還沒有想到什麼好的解決方法,之後可能改成字串作為函式的一個輸入引數,甚至乾脆封裝成一個結構體。目前沒有實現倒序輸出,改起來應該還算簡單,之後有時間再補充上。

 

相關文章