目录
为什么要写这篇
本来只是想写输出到文本文档,但后来觉得还有一种输出方式,输出到终端,虽然相比输出到文本文档认为要简单一些,但还是实现一下吧。
最终的效果图如下,函数的参数传入与输出到文本文档函数一样:数组首地址,数组大小,以及列数。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;
}
一点儿认识
两者的不足之处是数据表头需要更改函数内部语句,对于封装为一个函数来说,这是很让人不爽的事情,目前还没有想到什么好的解决方法,之后可能改成字符串作为函数的一个输入参数,甚至干脆封装成一个结构体。目前没有实现倒序输出,改起来应该还算简单,之后有时间再补充上。