
- 背景
- 代码思路
- 代码实现
- 调用Demo
- 相关博客
在C语言调试中,打印一维、二维数组是高频 *** 作,这里总结提炼了原子函数,进行一维二维打印。
对于不同类型及长度,仅需修改手工入参和类型转换即可迅速调用。
代码思路总体思路
-
输入:数组指针及其长度
-
输出:按相应类型循环打印到txt中
-
实现:
- 先实现1维打印原子函数
- 2维实现,降维后调用1维打印函数
- 涉及文件打开及关闭配平
使用前,应包含文件读写头文件:。
// only for debug, demo is written by nowknow
// filename: print_nums_debug.c
// param input by hand
#define TXT_PATH_STR "D:\Files\2.txt"
#define OPEN_MODE_STR "a+"
#define OPEN_ERR_STR "Open 2.txt failed\n"
#define PRINT_1D_STR(arr) fprintf(fp, "%c ", arr[col])
static inline void debug_print_1d_nums(void *nums, int cols)
{
// need to be set by hand
uint8_t *arr = (uint8_t*)nums;
FILE *fp = fopen(TXT_PATH_STR, OPEN_MODE_STR);
if (fp == NULL) {
printf(OPEN_ERR_STR);
exit(1);
}
int col;
for (col = 0; col < cols; col++) {
PRINT_1D_STR(arr);
}
fprintf(fp, "\n");
fclose(fp);
}
static inline void debug_print_2d_nums(void *nums, int rows, int cols)
{
// need to be set by hand
uint8_t *arr = (uint8_t*)nums;
int row;
for (row = 0; row < rows; row++) {
debug_print_1d_nums(&arr[row * cols], cols);
}
FILE *fp = fopen(TXT_PATH_STR, OPEN_MODE_STR);
if (fp == NULL) {
printf(OPEN_ERR_STR);
exit(1);
}
fprintf(fp, "\n");
fclose(fp);
}
调用Demo
#include
#include
// include
void main(void)
{
uint8_t nums1D[6] = {1, 2, 3, 4, 5, 6};
uint8_t nums2D[3][2] = {{1, 2}, {3, 4}, {5, 6}};
debug_print_1d_nums(nums1D, 6);
debug_print_1d_nums(nums2D, 3, 2);
return;
}
相关博客
- C学习:C语言必备函数模板,让你写C代码省力百倍,link
- C模板:十进制和十六进制数据批量转换, link
- C模板:统计分析数据的最值和平均值,link
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)