c语言基础---- 第六章 函数封装合集
时间:2019-10-08
本文章向大家介绍c语言基础---- 第六章 函数封装合集,主要包括c语言基础---- 第六章 函数封装合集使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
//判断字符是否为小写
#define RMMI_IS_LOWER( alpha_char ) \ ( ( (alpha_char >= rmmi_char_a) && (alpha_char <= rmmi_char_z) ) ? 1 : 0 )
//判断字符是否为十六进制数
#define RMMI_IS_HEX_NUMBER( alpha_char ) \ ( ( (alpha_char >= RMMI_CHAR_0) && (alpha_char <= RMMI_CHAR_F) ) ? 1 : 0 )
//全部转换成大写
void toUpper(kal_uint8 *str) { kal_uint8 *ptr; assert(str != NULL); ptr = str; while (*ptr != 0) { if (RMMI_IS_LOWER(*ptr)) { *ptr += (kal_uint8)(RMMI_CHAR_A - rmmi_char_a); } ptr++; } }
//实现字符串转换成十六进制
#include "stdio.h" #include "stdlib.h" #include "string.h" #include <ctype.h> #include <assert.h> typedef unsigned char kal_uint8; typedef unsigned short int kal_uint16; /* portable 16-bit signed integer */ typedef signed short int kal_int16; typedef enum { RMMI_SPACE = ' ', RMMI_EQUAL = '=', RMMI_COMMA = ',', RMMI_SEMICOLON = ';', RMMI_COLON = ':', RMMI_AT = '@', RMMI_HAT = '^', RMMI_DOUBLE_QUOTE = '"', RMMI_QUESTION_MARK = '?', RMMI_EXCLAMATION_MARK = '!', RMMI_FORWARD_SLASH = '/', RMMI_L_ANGLE_BRACKET = '<', RMMI_R_ANGLE_BRACKET = '>', RMMI_L_SQ_BRACKET = '[', RMMI_R_SQ_BRACKET = ']', RMMI_L_CURLY_BRACKET = '{', RMMI_R_CURLY_BRACKET = '}', RMMI_CHAR_STAR = '*', RMMI_CHAR_POUND = '#', RMMI_CHAR_AMPSAND = '&', RMMI_CHAR_PERCENT = '%', RMMI_CHAR_PLUS = '+', RMMI_CHAR_MINUS = '-', RMMI_CHAR_DOT = '.', RMMI_CHAR_ULINE = '_', RMMI_CHAR_TILDE = '~', RMMI_CHAR_REVERSE_SOLIDUS = '\\', RMMI_CHAR_VERTICAL_LINE = '|', RMMI_END_OF_STRING_CHAR = '\0', RMMI_CHAR_0 = '0', RMMI_CHAR_1 = '1', RMMI_CHAR_2 = '2', RMMI_CHAR_3 = '3', RMMI_CHAR_4 = '4', RMMI_CHAR_5 = '5', RMMI_CHAR_6 = '6', RMMI_CHAR_7 = '7', RMMI_CHAR_8 = '8', RMMI_CHAR_9 = '9', RMMI_CHAR_A = 'A', RMMI_CHAR_B = 'B', RMMI_CHAR_C = 'C', RMMI_CHAR_D = 'D', RMMI_CHAR_E = 'E', RMMI_CHAR_F = 'F', RMMI_CHAR_G = 'G', RMMI_CHAR_H = 'H', RMMI_CHAR_I = 'I', RMMI_CHAR_J = 'J', RMMI_CHAR_K = 'K', RMMI_CHAR_L = 'L', RMMI_CHAR_M = 'M', RMMI_CHAR_N = 'N', RMMI_CHAR_O = 'O', RMMI_CHAR_P = 'P', RMMI_CHAR_Q = 'Q', RMMI_CHAR_R = 'R', RMMI_CHAR_S = 'S', RMMI_CHAR_T = 'T', RMMI_CHAR_U = 'U', RMMI_CHAR_V = 'V', RMMI_CHAR_W = 'W', RMMI_CHAR_X = 'X', RMMI_CHAR_Y = 'Y', RMMI_CHAR_Z = 'Z', rmmi_char_a = 'a', rmmi_char_b = 'b', rmmi_char_c = 'c', rmmi_char_d = 'd', rmmi_char_e = 'e', rmmi_char_f = 'f', rmmi_char_g = 'g', rmmi_char_h = 'h', rmmi_char_i = 'i', rmmi_char_j = 'j', rmmi_char_k = 'k', rmmi_char_l = 'l', rmmi_char_m = 'm', rmmi_char_n = 'n', rmmi_char_o = 'o', rmmi_char_p = 'p', rmmi_char_q = 'q', rmmi_char_r = 'r', rmmi_char_s = 's', rmmi_char_t = 't', rmmi_char_u = 'u', rmmi_char_v = 'v', rmmi_char_w = 'w', rmmi_char_x = 'x', rmmi_char_y = 'y', rmmi_char_z = 'z', RMMI_R_BRACKET = ')', RMMI_L_BRACKET = '(', RMMI_MONEY = '$' } rmmi_char_enum; //判断字符是否为小写 #define RMMI_IS_LOWER( alpha_char ) \ ( ( (alpha_char >= rmmi_char_a) && (alpha_char <= rmmi_char_z) ) ? 1 : 0 ) //全部转换成大写 void toUpper(kal_uint8 *str) { kal_uint8 *ptr; assert(str != NULL); ptr = str; while (*ptr != 0) { if (RMMI_IS_LOWER(*ptr)) { *ptr += (kal_uint8)(RMMI_CHAR_A - rmmi_char_a); } ptr++; } } //判断字符是否为十六进制数 #define RMMI_IS_HEX_NUMBER( alpha_char ) \ ( ( (alpha_char >= RMMI_CHAR_0) && (alpha_char <= RMMI_CHAR_F) ) ? 1 : 0 ) kal_uint8 *str = "1D1213AB6FC1718B19202122232425A6C"; //字符串转换成十六进制 int StringToHex(kal_uint8 *str,kal_uint16 *val, unsigned int *vallen) { kal_uint8 high = 0, low = 0; int tmstrlen = strlen(str), cnt = 0; tmstrlen = strlen(str); assert((str != NULL) && (val != NULL)); toUpper(str);//对字符串实现小写字母转换成大写,可以省去对小写字母的判断 //toupper : 只能对单独的一个字符进行转换:int toupper ( int c ); while(cnt < (tmstrlen / 2)) { high = ((*str > RMMI_CHAR_9) && (*str <= RMMI_CHAR_F) ) ? *str - RMMI_CHAR_0 - 0x07 : *str - RMMI_CHAR_0; low = (*(++ str) > RMMI_CHAR_9 && (*str <= RMMI_CHAR_F) ) ? *(str) - RMMI_CHAR_0 - 0x07 : *(str) - RMMI_CHAR_0; val[cnt] = ((high & 0x0f) << 4 | (low & 0x0f)); str ++; cnt ++; } if(tmstrlen % 2 != 0) val[cnt] = ((*str > RMMI_CHAR_9) && (*str <= RMMI_CHAR_F) ) ? *str - RMMI_CHAR_0 - 0x07 : *str - RMMI_CHAR_0; printf("%02x\n",val[cnt]); if(vallen != NULL) *vallen = tmstrlen / 2 + tmstrlen % 2; return tmstrlen / 2 + tmstrlen % 2; } int main(int argc, const char *argv) { int cnt; kal_uint16 val[33]; int vallen = 0; StringToHex(str, val, &vallen); for(cnt = 0; cnt < vallen; cnt ++) { printf("%02X ", val[cnt]); } putchar(10); return 0; }
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//字符串转换成uchar
#include "stdio.h" #include "stdlib.h" #include "string.h" #include <ctype.h> #include <assert.h> typedef unsigned char kal_uint8; typedef unsigned short int kal_uint16; /* portable 16-bit signed integer */ typedef signed short int kal_int16; typedef enum { RMMI_SPACE = ' ', RMMI_EQUAL = '=', RMMI_COMMA = ',', RMMI_SEMICOLON = ';', RMMI_COLON = ':', RMMI_AT = '@', RMMI_HAT = '^', RMMI_DOUBLE_QUOTE = '"', RMMI_QUESTION_MARK = '?', RMMI_EXCLAMATION_MARK = '!', RMMI_FORWARD_SLASH = '/', RMMI_L_ANGLE_BRACKET = '<', RMMI_R_ANGLE_BRACKET = '>', RMMI_L_SQ_BRACKET = '[', RMMI_R_SQ_BRACKET = ']', RMMI_L_CURLY_BRACKET = '{', RMMI_R_CURLY_BRACKET = '}', RMMI_CHAR_STAR = '*', RMMI_CHAR_POUND = '#', RMMI_CHAR_AMPSAND = '&', RMMI_CHAR_PERCENT = '%', RMMI_CHAR_PLUS = '+', RMMI_CHAR_MINUS = '-', RMMI_CHAR_DOT = '.', RMMI_CHAR_ULINE = '_', RMMI_CHAR_TILDE = '~', RMMI_CHAR_REVERSE_SOLIDUS = '\\', RMMI_CHAR_VERTICAL_LINE = '|', RMMI_END_OF_STRING_CHAR = '\0', RMMI_CHAR_0 = '0', RMMI_CHAR_1 = '1', RMMI_CHAR_2 = '2', RMMI_CHAR_3 = '3', RMMI_CHAR_4 = '4', RMMI_CHAR_5 = '5', RMMI_CHAR_6 = '6', RMMI_CHAR_7 = '7', RMMI_CHAR_8 = '8', RMMI_CHAR_9 = '9', RMMI_CHAR_A = 'A', RMMI_CHAR_B = 'B', RMMI_CHAR_C = 'C', RMMI_CHAR_D = 'D', RMMI_CHAR_E = 'E', RMMI_CHAR_F = 'F', RMMI_CHAR_G = 'G', RMMI_CHAR_H = 'H', RMMI_CHAR_I = 'I', RMMI_CHAR_J = 'J', RMMI_CHAR_K = 'K', RMMI_CHAR_L = 'L', RMMI_CHAR_M = 'M', RMMI_CHAR_N = 'N', RMMI_CHAR_O = 'O', RMMI_CHAR_P = 'P', RMMI_CHAR_Q = 'Q', RMMI_CHAR_R = 'R', RMMI_CHAR_S = 'S', RMMI_CHAR_T = 'T', RMMI_CHAR_U = 'U', RMMI_CHAR_V = 'V', RMMI_CHAR_W = 'W', RMMI_CHAR_X = 'X', RMMI_CHAR_Y = 'Y', RMMI_CHAR_Z = 'Z', rmmi_char_a = 'a', rmmi_char_b = 'b', rmmi_char_c = 'c', rmmi_char_d = 'd', rmmi_char_e = 'e', rmmi_char_f = 'f', rmmi_char_g = 'g', rmmi_char_h = 'h', rmmi_char_i = 'i', rmmi_char_j = 'j', rmmi_char_k = 'k', rmmi_char_l = 'l', rmmi_char_m = 'm', rmmi_char_n = 'n', rmmi_char_o = 'o', rmmi_char_p = 'p', rmmi_char_q = 'q', rmmi_char_r = 'r', rmmi_char_s = 's', rmmi_char_t = 't', rmmi_char_u = 'u', rmmi_char_v = 'v', rmmi_char_w = 'w', rmmi_char_x = 'x', rmmi_char_y = 'y', rmmi_char_z = 'z', RMMI_R_BRACKET = ')', RMMI_L_BRACKET = '(', RMMI_MONEY = '$' } rmmi_char_enum; #define RMMI_IS_HEX_NUMBER( alpha_char ) \ ( ( (alpha_char >= RMMI_CHAR_0) && (alpha_char <= RMMI_CHAR_9) ) ? 1 : 0 ) kal_uint8 *str = "12152395364665748974644798"; void check_hex_value(kal_uint8 *str, kal_uint8 *val) { kal_uint16 i = 0, j = 0; kal_uint8 temp; ASSERT((str != NULL) && (val != NULL)); toUpper(str); while (str[i] != RMMI_END_OF_STRING_CHAR) { if (RMMI_IS_NUMBER(str[i])) { temp = str[i] - RMMI_CHAR_0; } else { temp = (str[i] - RMMI_CHAR_A) + 10; } if (RMMI_IS_NUMBER(str[i + 1])) { temp = (temp << 4) + (str[i + 1] - RMMI_CHAR_0); } else { temp = (temp << 4) + ((str[i + 1] - RMMI_CHAR_A) + 10); } val[j] = temp; i += 2; j++; } } int main(int argc, const char *argv) { int cnt; kal_uint8 val[33]; int vallen = 0; check_hex_value(str, val); for(cnt = 0; cnt < vallen; cnt ++) { printf("%02X ", val[cnt]); } putchar(10); return 0; }
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
原文地址:https://www.cnblogs.com/vx-cg248805770/p/11634460.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法