99
|
1
|
|
2 strcat(s,t)
|
|
3 char *s,*t;
|
|
4 { while (*s) ++s;
|
|
5 strcpy(s,t);
|
|
6 }
|
|
7
|
|
8 strcmp(s,t)
|
|
9 char *s,*t;
|
|
10 { for (; *s == *t; ++s,++t) if (!*s) break;
|
|
11 return (*s - *t);
|
|
12 }
|
|
13
|
|
14 strcpy(s,t)
|
|
15 char *s,*t;
|
|
16 { while (*s++ = *t++);
|
|
17 }
|
|
18
|
|
19 char *gets(s,n)
|
|
20 char *s;
|
|
21 int n;
|
|
22 { return fgets(s,n,stdin);
|
|
23 }
|
|
24
|
|
25 puts(s)
|
|
26 char *s;
|
|
27 { return fputs(s,stdout);
|
|
28 }
|
|
29
|
|
30 char *fgets(s,n,f)
|
|
31 char *s,*f;
|
|
32 int n;
|
|
33 {char c,*t;
|
|
34 t = s;
|
|
35 while (--n > 0)
|
|
36 { if ((c = getc(f)) == EOF) break;
|
|
37 if ((*s++ = c) == '\n') break;
|
|
38 }
|
|
39 *s = '\0';
|
|
40 return ((c == EOF && s == t) ? NULL : s);
|
|
41
|
|
42 }
|
|
43
|
|
44 fputs(s,f)
|
|
45 char *s,*f;
|
|
46 { while (*s) putc(*s++,f);
|
|
47 }
|
|
48
|
|
49 match(p,s)
|
|
50 char *p,*s;
|
|
51 { switch (*p)
|
|
52 {case '*':
|
|
53 if (!*(p+1)) return 1;
|
|
54 while (!match(p+1,s)) if (!*s++) return 0;
|
|
55 return 1;
|
|
56 case '?':
|
|
57 return (*s ? match(p+1,s+1) : 0);
|
|
58 case '\0':
|
|
59 return (!*s);
|
|
60 default:
|
|
61 if (*p == *s) return match(p+1,s+1);
|
|
62 return 0;
|
|
63 }
|
|
64 }
|