前言
分享一个我初学C语言的时候的用于测试C语言知识点的一个小模板。
好记性不如烂笔头,我们平时学习也应该多做一些记录,多整理自己所学的知识,以便之后有必要的时候可以回顾。
以前我刚开始学习C语言的时候经常需要验证一些比较模糊的知识点,或则想要验证一些函数时,所以我每次都会建一个test.c文件,然后在这个文件里写我的测试代码,测试完毕后常常会删掉该文件。
下次再遇到同样的问题的时候,可能又是记不清楚了,常常又需要测试一遍,这是件很浪费时间的事情。
所以,我们可以编写一个专门用于测试的程序:(1)有菜单,可以通过菜单选择想要测试的函数;(2)有功能函数,把一些需要测试的功能封装成一个函数;(3)有测试函数,用于测试功能函数及一些知识点。
该测试程序大致如下:
我们只要输入菜单前面的数字就可以进行对应的测试啦。挺方便的,日积月累,渐渐的,就可以积累很多知识点。如:
该测试程序代码模板
1、菜单函数如下:
2、主函数如下:
3、该测试程序函数声明部分如下
完整程序
/*---------------------------------------------------------------------------------------- 微信公众号:嵌入式大杂烩 ----------------------------------------------------------------------------------------*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <limits.h> // 功能函数声明 void exchange(int *a, int *b); // 交换a,b的值最好的方法 // 测试函数声明 void test1(void); // 测试函数1:交换a,b的值 void test2(void); // 测试函数2:C语言预定义宏 void test3(void); // 测试函数3:C89与C99标准的区别 void test4(void); // 测试函数4:输出当前编译器数据类型范围 // 菜单 int menu(void); /*============================================================================= 主函数 ==============================================================================*/ int main(void) { int cmd = 0; for (;;) // 死循环,等价于while(1) { cmd = menu(); // 读取用户输入的指令 switch (cmd) { case 1 : test1(); break; // 测试函数1:交换a,b的值 case 2 : test2(); break; // 测试函数2:C语言预定义宏 case 3 : test3(); break; // 测试函数3:C89与C99标准的区别 case 4 : test4(); break; // 测试函数4:输出当前编译器数据类型范围 case -1: exit(0); break; // 退出程序 case -2: system("cls"); break; // 清空屏幕 default:break; } } return 0; } /*============================================================================= 以下是功能函数实体 ==============================================================================*/ /* 交换a,b的值 */ void exchange(int *a, int *b) { *a = *a^*b; *b = *a^*b; *a = *a^*b; } /*============================================================================= 以下是测试函数实体 ==============================================================================*/ /* 交换a,b的值 */ void test1(void) { system("cls"); int a = 13, b = 14; printf("交换之前a = %d, b = %dn", a, b); exchange(&a, &b); printf("交换之后a = %d, b = %dn", a, b); } /* C语言预定义宏 */ void test2(void) { system("cls"); printf("当前代码行号:%dn", __LINE__); printf("当前编译日期:%sn", __DATE__); printf("当前编译时间:%sn", __TIME__); printf("当前文件名称:%sn", __FILE__); printf("当前函数名称:%sn", __FUNCTION__); } /* C89与C99标准的区别 */ void test3(void) { int i; system("cls"); // C99允许在for循环内定义循环变量,而C89不允许 // gcc -std=c99 test.c -o test.exe // for (int i = 0; i < 5; i++) for (i = 0; i < 5; i++) { printf("hello world!n"); } } /* 输出当前编译器数据类型范围 */ void test4(void) { system("cls"); printf("char的范围为: %d —— %dn", CHAR_MIN, CHAR_MAX); printf("unsigned char的范围为: %u —— %unn", 0, UCHAR_MAX); printf("short的范围为: %hd —— %hdn", SHRT_MIN, SHRT_MAX); printf("unsigned short的范围为: %hu —— %hunn", 0, USHRT_MAX); printf("int的范围为: %d —— %dn", INT_MIN, INT_MAX); printf("unsigned int的范围为: %u —— %unn", 0, UINT_MAX); printf("long的范围为: %ld —— %ldn", LONG_MIN, LONG_MAX); printf("unsigned long的范围为: %lu —— %lunn", 0, ULONG_MAX); printf("long long的范围为: %lld —— %lldn", LLONG_MIN, LLONG_MAX); printf("unsigned long long的范围为: %llu —— %llunn", 0, ULLONG_MAX); } /*============================================================================= 以下是菜单函数 ==============================================================================*/ int menu(void) { int cmd = 0; char buf[10] = {0}; // 菜单信息输出 printf("=============================菜单==============================n"); printf("[01]测试:交换a,b的值n"); printf("[02]测试:C语言预定义宏n"); printf("[03]测试:C89与C99标准的区别n"); printf("[04]测试:输出当前编译器数据类型范围n"); printf("[-1]退出n"); printf("[-2]清屏n"); printf("===============================================================n"); do{ printf("请输入您的选择:"); gets(buf); cmd = atoi(buf); }while (cmd < 1 && cmd > 4); return cmd; }
每当需要测试一些知识点时,就可以按照这样子的格式在后边添加,可以很好地进行积累。
往期好文:
C语言、嵌入式中一些非常实用的宏技巧
C语言、嵌入式重点知识:回调函数
分享一个有趣的库,让你学习C语言不会觉得那么枯燥
我整理了一个嵌入式资料库,大家有什么好资料分享?可以给我留言,我把它加进去,资源共享,一起来完善这个资料库!
(资料库链接:https://gitee.com/zhengnianli/EmbedSummary)
还没有评论,来说两句吧...