2607

s21_string

Nov 1st, 2021 (edited)
1,222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.30 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "s21_string.h"
  4.  
  5.  
  6. void input(char *a);
  7. void output(char *a);
  8.  
  9. /*
  10. int main() {
  11.     char *str1 = "1235";
  12.     char *str2 = "1234";
  13.     printf("Длина\n");
  14.     s21_size_t l1 = s21_strlen(str1);
  15.     printf("len = %d\n\n", l1);
  16.  
  17.     //input(str1);
  18.     //input(str2);
  19.     printf("сравнение\n");
  20.     s21_size_t f = s21_strcmp(str1, str2);
  21.     printf("flag = %d\n", f);
  22.     printf("original flag = %d\n\n", strcmp(str1, str2));
  23.  
  24.     printf("сравнение n\n");
  25.     s21_size_t g = s21_strncmp(str1, str2, 4);
  26.     printf("flag = %d\n", g);
  27.     printf("original flag = %d\n\n", strncmp(str1, str2, 4));
  28.     printf("копия\n");
  29.     char buf[6]="";
  30.     s21_strcpy(buf, str1);
  31.     printf("%s\n\n", buf);
  32.  
  33.     printf("копия n\n");
  34.     char buf1[32]="";
  35.     s21_strncpy(buf1, str1, 8);
  36.     printf("%s\n\n", buf1);
  37.  
  38.     output(str1);
  39.     output(str2);
  40.     return 0;
  41. }
  42. */
  43.  
  44. void input(char *a) {
  45.     for (int i = 0; i < 10; i++) {
  46.         scanf("%c ", a+i);
  47.     }
  48. }
  49. void output(char *a) {
  50.     int len = s21_strlen(a);
  51.     for (int p = 0; p < len; p++) {
  52.         printf("%c", *(a+p));
  53.     }
  54.     printf("\n");
  55. }
  56.  
  57. int s21_strcmp(const char *str1, const char *str2) {
  58.     int f = 0;
  59.     int len = s21_strlen(str1);
  60.     int len2 = s21_strlen(str2);
  61.     if(len2 > len)
  62.         len = len2;
  63.     for (int i = 0; i < len; ++i) {
  64.         if (*(str1+i) > *(str2+i)) {
  65.             f = *(str1+i) - *(str2+i);
  66.             break;
  67.         } else if (*(str1+i) < *(str2+i)){
  68.             // f = -1;
  69.             f = *(str1+i) - *(str2+i);
  70.             break;
  71.         }
  72.     }
  73.     return f;
  74. }
  75.  
  76. s21_size_t s21_strlen(const char *str)
  77. {
  78.     s21_size_t len = 0;
  79.     while (1) {
  80.         if (*(str+len) == '\0')
  81.             break;
  82.         len++;
  83.     }
  84.     return len;
  85. }
  86.  
  87. s21_size_t s21_strncmp(const char *str1, const char *str2, s21_size_t n) {
  88.     int f = 0;
  89.     for (int i = 0; i < n; ++i) {
  90.         if (*(str1+i) > *(str2+i)) {
  91.             f = *(str1+i) - *(str2+i);
  92.             break;
  93.         } else if (*(str1+i) < *(str2+i)){
  94.             f = *(str1+i) - *(str2+i);
  95.             break;
  96.         }
  97.     }
  98.     return f;
  99. }
  100.  
  101. char *s21_strcpy(char *dest, const char *src) {
  102.     int i = 0;
  103.     while (*(src+i) != '\0') {
  104.         *(dest+i) = *(src+i);
  105.         i++;
  106.     }
  107.     return dest;
  108. }
  109.  
  110. char *s21_strncpy(char *dest, const char *src, int n) {
  111.     for (int i = 0; i < n; i++) {
  112.         *(dest+i) = *(src+i);
  113.     }
  114.     return dest;
  115. }
  116. /*
  117. int s21_memcmp(const void *str1, const void *str2, s21_size_t n) {
  118.     int returnable = 0;
  119.     char *str1_temp = (char *)str1;
  120.     char *str2_temp = (char *)str2;
  121.     if (str1_temp == NULL && str2_temp == NULL) {
  122.         returnable = 0;
  123.     } else if (str1_temp == NULL && str2_temp != NULL) {
  124.         returnable = 1;
  125.     } else if (str1_temp != NULL && str2_temp == NULL) {
  126.         returnable = -1;
  127.     } else {
  128.         s21_size_t i = 0;
  129.         while (i < n && str1_temp[i] == str2_temp[i]) {
  130.         i++;
  131.         }
  132.         if (i != n && str1_temp[i] > str2_temp[i]) {
  133.             returnable = 1;
  134.         } else if (i != n && str1_temp[i] < str2_temp[i]) {
  135.             returnable = -1;
  136.         } else {
  137.             returnable = 0;
  138.         }
  139.     }
  140.     return returnable;
  141. }
  142. */
  143.  
Add Comment
Please, Sign In to add comment