1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #include <stdio.h>
- size_t strlen_diy(const char *s) {
- const char *a = s;
- while (*s++)
- ;
- return s - a - 1;
- }
- void *memchr_diy(const void *src, int c, size_t n) {
- const unsigned char *s = src;
- c = (unsigned char)c;
- for (; n && *s != c; s++, n--)
- ;
- return n ? (void *)s : 0;
- }
- size_t strnlen_diy(const char *s, size_t n) {
- const char *p = memchr_diy(s, 0, n);
- return p ? p - s : n;
- }
- char *strcpy_diy(char *d, const char *s) {
- char *p = d;
-
- while ((*d++ = *s++))
- ;
- return p;
- }
- char *strcat_diy(char *d, const char *s) {
- strcpy_diy(d + strlen_diy(d), s);
- return d;
- }
- int main() {
- char str[] = "Hello World -> (strlen_diy memchr_diy strcpy_diy strcat_diy)";
-
- puts(memchr_diy(str, '(', strlen_diy(str)));
-
- int len = strlen_diy(str);
- printf("len: %d\n", len);
-
- len = strnlen_diy(str, 100);
- printf("len: %d\n", len);
-
- char *s = strcpy_diy(str, "Hello C/C++ LIBC:");
- printf("%s\n", s);
-
- s = strcat_diy(str, "-> strcat_diy");
- printf("%s\n", s);
- return 0;
- }
|