strlib.c
来自「在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LE」· C语言 代码 · 共 216 行
C
216 行
/*
* FILENAME: strlib.c
*
* Copyright 1998- 2000 By InterNiche Technologies Inc. All rights reserved
*
* Universal string functions, provided for systems with no C library.
* Created for minimal C lib support. Portions of this are still only
* lightly tested. Caveat Emptor. -JB-
*
* MODULE: MISCLIB
*
* ROUTINES: strlen(), strcpy(), strncpy(), strcmp(), strncmp(),
* ROUTINES: strcat(), strchr(), strstr(), *
* PORTABLE: yes
*/
/* Additional Copyrights: */
/* Portions Copyright 1993 by NetPort software. */
#include "ipport.h"
#include "in_utils.h"
#ifdef INICHE_LIBS
/* FUNCTION: strlen()
*
* PARAM1: char * str
*
* RETURNS:
*/
int
strlen(char * str)
{
int len = 0;
while (*str++) len++;
return(len);
}
/* FUNCTION: strcpy()
*
* PARAM1: char * dest
* PARAM2: char * src
*
* RETURNS:
*/
char *
strcpy(char * dest, char * src)
{
char * ret = dest;
while (*src)
*dest++ = *src++;
*dest = 0;
return ret;
}
/* FUNCTION: strncpy()
*
* PARAM1: char * dest
* PARAM2: char * src
* PARAM3: int maxcopy
*
* RETURNS:
*/
char *
strncpy(char * dest, char * src, int maxcopy)
{
char * ret = dest;
while (*src && maxcopy)
{
*dest++ = *src++;
maxcopy--;
}
*dest = 0; /* null terminate string */
return ret;
}
/* FUNCTION: strcmp()
*
* PARAM1: char * str1
* PARAM2: char * str2
*
* RETURNS:
*/
int
strcmp(char * str1, char * str2)
{
while (*str1)
{
if (*str1 > *str2) return 1;
if (*str1++ < *str2++) return -1;
}
/* added by jharan, 4-26-99 */
/* if we have not gotten to the end of str2 by the time we have
gotten to the end of the str1, then str1 is less than str2 */
if (*str2)
return -1;
return 0;
}
/* FUNCTION: strncmp()
*
* PARAM1: char * str1
* PARAM2: char * str2
* PARAM3: int length
*
* RETURNS:
*/
int
strncmp(char * str1, char * str2, int length)
{
while (length--)
{
if (*str1 > *str2)
return 1;
if (*str1++ < *str2++)
return -1;
}
return 0;
}
/* FUNCTION: strcat()
*
* PARAM1: char * str1
* PARAM2: char * str2
*
* RETURNS:
*/
char *
strcat(char * str1, char * str2)
{
char * cp;
cp = str1;
while (*cp) /* find null at the end of str1 */
cp++;
while (*str2) /* copy str2 onto end */
*cp++ = *str2++;
*cp = 0; /* null terminate */
return str1;
}
/* FUNCTION: strchr()
*
* PARAM1: char * str
* PARAM2: char chr
*
* RETURNS:
*/
char *
strchr(char * str, char chr)
{
while (*str)
{
if (*str == chr)
return str;
else
str++;
}
if (chr == 0) /* caller was looking for null */
return str; /* return pointer to null */
return (char*)0;
}
/* FUNCTION: strstr()
*
* strstr(str1, str2) - look for str2 inside str1
*
*
* PARAM1: char * str1
* PARAM2: char * str2
*
* RETURNS:
*/
char *
strstr(char * str1, char * str2)
{
while (*str1)
{
if (*str1 == *str2) /* found first char of str2 in str1 */
{
if (strncmp(str1, str2, strlen(str2)) == 0)
{
return str1; /* found str2 at str1 */
}
}
str1++;
}
return (char*)0;
}
#endif /* INICHE_LIBS */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?