char *strcat_n (char *pdest, char *pstr_cat, long len_max)
{
char *pstr;
char *pstr_next;
long len_cat;
if (pdest == NULL) {
return NULL;
}
if (pstr_cat == NULL) {
return NULL;
}
if (len_max == 0) {
return NULL;
}
pstr = pdest;
while (( pstr != NULL) && (*pstr != NULL)) {
pstr++;
}
if (pstr == NULL) {
return NULL;
}
pstr_next = pstr;
pstr_next++;
len_cat = 0;
while (( pstr_next != NULL) &&
( pstr_cat != NULL) &&
(*pstr_cat != NULL) &&
( len_cat < len_max)) {
*pstr = *pstr_cat;
pstr++;
pstr_next++;
pstr_cat++;
len_cat++;
}
*pstr = NULL;
return (pdest);
}
char *strcpy_n (char *pdest, char *psrc, long len_max)
{
char *pstr;
char *pstr_next;
long len_copy;
if (pdest == NULL) {
return NULL;
}
if (psrc == NULL) {
return NULL;
}
if (len_max == 0) {
return NULL;
}
pstr = pdest;
pstr_next = pstr;
pstr_next++;
len_copy = 0;
while (( pstr_next != NULL) &&
( psrc != NULL) &&
(*psrc != NULL) &&
( len_copy < len_max)) {
*pstr = *psrc;
pstr++;
pstr_next++;
psrc++;
len_copy++;
}
*pstr = NULL;
return (pdest);
}
short strcmp_n (char *p1_str, char *p2_str, long len_max)
{
char *p1_str_next;
char *p2_str_next;
short cmp_val;
long cmp_len;
if (len_max == 0) {
return 0;
}
if (p1_str == NULL) {
if (p2_str == NULL) {
return 0;
}
cmp_val = 0 - (short)(*p2_str);
return (cmp_val);
}
if (p2_str == NULL) {
cmp_val = (short)(*p1_str);
return (cmp_val);
}
p1_str_next = p1_str;
p2_str_next = p2_str;
p1_str_next++;
p2_str_next++;
cmp_len = 0;
while ((*p1_str == *p2_str) &&
(*p1_str != NULL) &&
( p1_str_next != NULL) &&
( p2_str_next != NULL) &&
( cmp_len < len_max)) {
p1_str_next++;
p2_str_next++;
p1_str++;
p2_str++;
cmp_len++;
}
if (cmp_len == len_max) {
return (0);
}
if (*p1_str != *p2_str) {
cmp_val = (short)(*p1_str) - (short)(*p2_str);
} else if (*p1_str == 0) {
cmp_val = 0;
} else {
if (p1_str_next == NULL) {
if (p2_str_next == NULL) {
cmp_val = 0;
} else {
cmp_val = 0 - (short)(*p2_str_next);
}
} else {
cmp_val = (short)(*p1_str_next);
}
}
return (cmp_val);
}
:) 系统函数转出来的。 1级标准。