diff os9/mc09/string.txt @ 99:92ed427b7f7d

add micro-c by mohta
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 27 Dec 2018 11:01:16 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/os9/mc09/string.txt	Thu Dec 27 11:01:16 2018 +0900
@@ -0,0 +1,64 @@
+
+strcat(s,t)
+char *s,*t;
+{       while (*s) ++s;
+        strcpy(s,t);
+}
+
+strcmp(s,t)
+char *s,*t;
+{       for (; *s == *t; ++s,++t) if (!*s) break;
+        return (*s - *t);
+}
+
+strcpy(s,t)
+char *s,*t;
+{       while (*s++ = *t++);
+}
+
+char *gets(s,n)
+char *s;
+int n;
+{       return fgets(s,n,stdin);
+}
+
+puts(s)
+char *s;
+{       return fputs(s,stdout);
+}
+
+char *fgets(s,n,f)
+char *s,*f;
+int n;
+{char c,*t;
+        t = s;
+        while (--n > 0)
+        {       if ((c = getc(f)) == EOF) break;
+                if ((*s++ = c) == '\n') break;
+        }
+        *s = '\0';
+        return ((c == EOF && s == t) ? NULL : s);
+
+}
+
+fputs(s,f)
+char *s,*f;
+{       while (*s) putc(*s++,f);
+}
+
+match(p,s)
+char *p,*s;
+{       switch (*p)
+        {case '*':
+                if (!*(p+1)) return 1;
+                while (!match(p+1,s)) if (!*s++) return 0;
+                return 1;
+         case '?':
+                return (*s ? match(p+1,s+1) : 0);
+         case '\0':
+                return (!*s);
+         default:
+                if (*p == *s) return match(p+1,s+1);
+                return 0;
+        }
+}