⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rvstr.c

📁 h.248协议源码
💻 C
字号:

#include <ctype.h>
#include <string.h>
#include "rvstr.h"

/* Copy source to destination, appending a null character in any case */
char *rvStrNcpyz(char *dst, const char *src, size_t size) {
	strncpy(dst, src, size);
	dst[size] = '\0';
	return dst;
}

/* Perform a case-insensitive comparison */
/* Return 0 if strings are equal, negative if str1 < str2, positive if str1 > str2 */
int rvStrIcmp(const char *str1, const char *str2) {

	while (*str1 && *str2) {
		int diff = tolower(*str1) - tolower(*str2);
		if(diff)
			return diff;
		str1++;
		str2++;
	}

	return *str1 ? 1 : *str2 ? -1 : 0;
}

/* Convert a string to lowercase in-place */
void rvStrToLower(char* str) {
	while (*str) {
		*str = tolower(*str);
		str++;
	}
}

/* Specialized variant of strcpy which returns pointer to the end */ 
/* of the destination string.  This helps speed up copying of */ 
/* subsequent strings */
char* rvStrCopy(char* d, const char* s) {
	while (*s != '\0') *d++ = *s++;
	*d = '\0';
	return d;
}

/* Modified version of strrev which avoids call to strlen when */
/* the string length is already known */
char* rvStrRevN(char* s, int n) {
	int i, j;
	char c;

	for (i = 0, j = n - 1; i < j; ++i, --j) {
		c = s[i];
		s[i] = s[j];
		s[j] = c;
	}

	return s;
}

char* rvStrFindFirstNotOf(char* str, char* delimiters) {
	for (; *str != '\0' && strchr(delimiters, *str) != NULL; ++str)
		;
	return str;
}

char* rvStrFindFirstOf(char* str, char* delimiters) {
	for (; *str != '\0' && strchr(delimiters, *str) == NULL; ++str)
		;
	return str;
}

RvStrTok* rvStrTokConstruct(RvStrTok* t, char* delimiters, char* str) {
	t->delimiters = delimiters;
	t->p = rvStrFindFirstNotOf(str, delimiters);
	return t;
}

char* rvStrTokGetToken(RvStrTok* t) {
	char* str = t->p;

	if (*str == '\0')
		return NULL;

	t->p = rvStrFindFirstOf(t->p, t->delimiters);
	if (*(t->p) != '\0') {
		*(t->p) = '\0';
		t->p = rvStrFindFirstNotOf((t->p) + 1, t->delimiters);
	}
	return str;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -