常⽤c语⾔代码⼤全,C语⾔的⼀些常⽤代码
C语⾔经常需要发明各种轮⼦,为⽅便以后能够把精⼒放在应⽤逻辑上⽽不在发明轮⼦上,把⼀些常⽤的代码⽚段列于此。
⾸先是字符串处理⽅⾯的,strcpy 函数容易越界,习惯使⽤ strncpy 函数,但此函数只管复制最多 n 个字符,并不会把末尾的字符⾃动修改为 '\0',所以给它加上这个操作:
char* utils_strncpy (char *dest, const char *src, size_t length)
{
strncpy (dest, src, length);
dest[length] = '\0';
return dest;
} 内存分配函数 malloc 分配内存却不进⾏初始化,给它也加上初始化的操作:
void* utils_malloc (size_t size)
{
void *ptr = malloc (size);
if (ptr != NULL)
memset (ptr, 0, size);
return ptr;
} 内存释放函数 free 只是释放内存,却不把指针置为空指针,⽽且对空指针执⾏ free 也不知道是否安全,于是改造如下:
void utils_free(void **p)
{
if (p == NULL || *p == NULL)
return;
free(*p);
*p = NULL;
}
相应的有字符串复制函数:
char* utils_strdup (const char *ch)
{
char *copy;
size_t length;
if (ch == NULL)
return NULL;
length = strlen (ch);
copy = (char *) utils_malloc (length + 1);
if (copy==NULL)
return NULL;
utils_strncpy (copy, ch, length);
return copy;
}
把字符串中的⼤写字母改为⼩写:
int utils_tolower (char *word)
{
size_t i;
size_t len = strlen (word);
for (i = 0; i <= len - 1; i++)
{
if ('A' <= word[i] && word[i] <= 'Z')
word[i] = word[i] + 32;
}
return 0;
基础c语言代码} 清除字符串⾸尾的空⽩字符(空格,\r,\n,\r):
int utils_clrspace (char *word)
{
char *pbeg;
char *pend;
size_t len;
if (word == NULL)
return -1;
if (*word == '\0')
return 0;
len = strlen (word);
pbeg = word;
while ((' ' == *pbeg) || ('\r' == *pbeg) || ('\n' == *pbeg) || ('\t' == *pbeg)) pbeg++;
pend = word + len - 1;
while ((' ' == *pend) || ('\r' == *pend) || ('\n' == *pend) || ('\t' == *pend)) {
pend--;
if (pend < pbeg)
{
*word = '\0';
return 0;
}
}
/* Add terminating NULL only if we've cleared room for it */ if (pend + 1 <= word + (len - 1))
pend[1] = '\0';
if (pbeg != word)
memmove (word, pbeg, pend - pbeg + 2);
return 0;
}
嘎然⽽⽌.......
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论