/
string.c
90 lines (77 loc) · 1.54 KB
/
string.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include<stdio.h>
/*复制字符串*/
char *rt_strcpy(char *des, const char *source)
{
char *p = des;
while(*des++ = *source)
;
return p;
}
/*比较字符串*/
int rt_strcmp(const char *s, const char *t)
{
for(;*s == *t;s++, t++)
if(*s == '\0')
return 0;
return *s - *t;
}
/*将字符查ut追加到字符串s的后面*/
char *rt_strcat(char *s, const char *t)
{
char *p = s;
while(*s)
++s;
while(*s++ = *t++)
;
return p;
}
/*判断字符串t是否出现在字符串s的末尾*/
int rt_strend(const char *s, const char *t)
{
const char *p = t;
while(*s)
s++;
while(*t++)
s--;
/*return (rt_strcmp(s, p) == 0) ? 1 : 0;*/
for(;*s == *p;s++, p++)
if(*s == '\0')
return 1;
return 0;
}
/*最多复制n个字符,若source的长度不足n个字符,则使用‘\0’补充至n个*/
char *rt_strncpy(char *des, const char *source, int n)
{
char *p = des;
while(n-- && (*des++ = *source++))
;
while(n-- > 0)
*des++ = '\0';
return p;
}
/*最多追加n个字符*/
char *rt_strncat(char *des, const char *source, int n)
{
char *p = des;
while(*des)
++des;
while(n-- && (*des++ = *source++))
;
*des = '\0';
return p;
}
/*比较两字符串前n位的大小*/
int rt_strncmp(const char *s, const char *t, int n)
{
for(;*s == *t && n--;s++, t++)
if(*s == '\0' || n == 0)
return 0;
return *s - *t;
}
int main()
{
char s[20] = "123abc";
char t[20] = "123456";
printf("%d\n", rt_strncmp(s, t, 4));
return 0;
}