C/C++常用函数总结

6 篇文章 0 订阅
4 篇文章 0 订阅
/**
 * 是否为需要忽略的完整文件名
 * @param file_name 
 * @return true 
 * @return false 
 */
bool is_ignore_complete_file_name(const char *file_name) {
	if(file_name == NULL || *file_name == 0){
		return false;
	}
	hulk_trace("hulk: is_ignore_complete_file_name: Dest file_name: %s", file_name);

	//需要忽略的文件名数组
	char *ignore_file_names[] = {"vpncore.log", "trustcore.log", "timerslack_ns"};
	//C/C++中计算字符串数组长度方法:int len = sizeof(array)/sizeof(array[0])
	//注意:字符串数组作为擦参数传递给其他函数时,对方函数中sizeof(array)返回值始终未4,
	//所以,如果一定要通过函数处理数组时,必须把数组长度一起传过去
	int size = sizeof(ignore_file_names);
	int firstSize = sizeof(ignore_file_names[0]);
	int len = size/firstSize;
	//hulk: is_ignore_complete_file_name: size: 12, firstSize: 4, length: 3
	hulk_trace("hulk: is_ignore_complete_file_name: size: %d, firstSize: %d, length: %d", size, firstSize, len);

	int i=0;
	char *element;
	do
	{
		if (i >= len){
			//防止溢出
			hulk_trace("hulk: is_ignore_complete_file_name: Invalid i: %d", i);
			break;
		}
		
		element = ignore_file_names[i];
		if (element != NULL && *element != 0){
			//hulk_trace("hulk: is_ignore_complete_file_name: element: %s", element);
			//strcmp返回值:
			//如果返回值 < 0,则表示 str1 小于 str2
			//如果返回值 > 0,则表示 str2 小于 str1
			//如果返回值 = 0,则表示 str1 等于 str2
			int res = strcmp(file_name, element);
			bool equals = res == 0;
			if (equals){
				//hulk_trace("hulk: is_ignore_complete_file_name: found element: %s", element);
				return true;
			}
		} else {
			hulk_trace("hulk: is_ignore_complete_file_name: Invalid file array element: %s", element);
		}
		i++;
	} while (i < len);
	//未找到
	return false;
}

/**
 * 判断str1是否以str2开头
 * 
 * @param str1 
 * @param str2 
 * @return bool 如果是返回true, 不是返回 false
 */
bool start_with(const char * str1,char *str2){
	int flag = is_start_with(str1, str2);
	return flag == 1;
}

/**
 * 判断str1是否以str2开头
 * 如果是返回1
 * 不是返回0
 * 出错返回-1
 * */
int is_start_with(const char * str1,char *str2)
{
    if(str1 == NULL || str2 == NULL) {
		//hulk_trace("hulk: is_start_with: Invalid str1= %s or str2= %s", str1, str2);
        return -1;
	}
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    if((len1 < len2) ||  (len1 == 0 || len2 == 0)) {
		//hulk_trace("hulk: is_start_with: Invalid len1= %d or len2= %d", len1, len2);
        return -1;
	}
    char *p = str2;
    int i = 0;
    while(*p != '\0')
    {
        if(*p != str1[i]) {
			//hulk_trace("hulk: is_start_with: %s is not start with %s", str1, str2);
            return 0;
		}
        p++;
        i++;
    }
	//hulk_trace("hulk: is_start_with: %s is start with %s", str1, str2);
    return 1;
}

/**
 * 判断str1是否以str2结尾
 * @param str1 
 * @param str2 
 * @return bool  如果是返回true, 不是返回 false
 */
bool end_with(const char *str1, char *str2) {
	int flag = is_end_with(str1, str2);
	return flag == 1;
}

/**
 * 判断str1是否以str2结尾
 * 如果是返回1
 * 不是返回0
 * 出错返回-1
 * */
int is_end_with(const char *str1, char *str2)
{
    if(str1 == NULL || str2 == NULL) {
		//hulk_trace("hulk: is_end_with: Invalid str1= %s or str2= %s", str1, str2);
        return -1;
	}
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    if((len1 < len2) ||  (len1 == 0 || len2 == 0)) {
		//hulk_trace("hulk: is_end_with: Invalid len1= %d or len2= %d", len1, len2);
        return -1;
	}
    while(len2 >= 1)
    {
        if(str2[len2 - 1] != str1[len1 - 1]) {
			//hulk_trace("hulk: is_end_with: %s is not end with %s", str1, str2);
            return 0;
		}
        len2--;
        len1--;
    }
	//hulk_trace("hulk: is_end_with: %s is end with %s", str1, str2);
    return 1;
}

/**
 * 判断文件书否存在
 * 如果存在返回 true, 不存在返回false
 * */
bool is_file_exists(const char *path)
{
	//判断方法: 文件的可访问性判断文件是否存在
	if(access(path,F_OK) == 0){
		//hulk_trace("hulk:is_file_exists: existed file: %s", path);
		return true;
	}
    return 0;
}

void hulk_trace() {
    //调用log打印函数
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值