SHARE
TWEET

Untitled

a guest Nov 20th, 2019 99 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. int str_len(char* str);
  3. char* str_copy(char* dst,char* str);
  4. char* str_cat(char* str1,char* str2);
  5. int str_cmp(char* str1,char* str2);
  6. char* str_str(char* str,char* sub_str);
  7. int longest_word(char* str);
  8. int ch_str(char* str, char ch);
  9. void print_words(char* str);
  10. char* reverse_sub_str(char* str,int start,int end);
  11. void swap(char* a,char* b);
  12.  
  13. int main(){
  14.     char str[10]={'A','b','2','4','f','5','g'};
  15.     char str1[]={"134"};
  16.     char* str2={"11"};
  17.     char dst[15]={};
  18.     char sub_str[10]={'l','l','o'};
  19.     //printf("%d\n",str_len(str));
  20.     //printf("%s\n",str_copy(dst,str));
  21.     //printf("%s\n",str_cat(str1,str2));
  22.     printf("%d\n",str_cmp(str1,str2));
  23.     //printf("%s",str_str(str2,sub_str));
  24.     //printf("\n%d",longest_word(str2));
  25.     //print_words(str2);
  26.  
  27. return 0;
  28. }
  29.  
  30.  
  31.  
  32. int str_len(char* str){     // выводит количество символов в строке, из-за конца строки и нумерации массивов в С
  33. int i=0;
  34. while(str[i])
  35.     i++;
  36. return i;
  37. }
  38. char* str_copy(char* dst,char* str){    //  если символов больше чем размер копируемой - 32 строка кода
  39.     int i=0;
  40.     while(str[i]){
  41.             dst[i]=str[i];
  42.             i++;
  43.     }
  44.     dst[i]='\0';
  45. return dst;
  46. }
  47. char* str_cat(char* str1,char* str2){      // сложить две строки, пока не закочится вторая
  48.     int i=0;
  49.     int len_1=str_len(str1);
  50.     int len_2=str_len(str2);
  51.         while(str1[i]){
  52.             str1[i+len_1]=str2[i];
  53.             i++;
  54.         }
  55.     str1[i]='\0';
  56.  
  57.     return str1;
  58. }
  59. int str_cmp(char* str1,char* str2){ // анализирует коды, если строки равны - 0, у первого неодинакого символа выводит разность их кодов, если <0-строка 1 меньше
  60.     int i=0;
  61.     int delta=0;
  62.     while(str1[i] && str2[i] &&  delta==0){
  63.         delta = str1[i] - str2[i];
  64.         i++;
  65.         }
  66.         return delta;
  67. }
  68. char* str_str(char* str,char* sub_str){
  69.     int i = 0, j = 0, flag = 1;
  70.     while (str[i])
  71.     {
  72.         j = 0;
  73.         flag = 1;
  74.         while (sub_str[j])
  75.         {
  76.             if (str[i + j] != sub_str[j])
  77.             {
  78.                 flag = 0;
  79.                 break;
  80.             }
  81.             j++;
  82.         }
  83.         if (flag)
  84.             return str + i;
  85.         i++;
  86.     }
  87.  
  88. }
  89.  
  90. int ch_str(char* str, char ch)
  91. {
  92.     int i = 0;
  93.     while (str[i])
  94.     {
  95.         if (str[i] == ch)
  96.         {
  97.             return i;
  98.         }
  99.         else i++;
  100.     }
  101.     return -1;
  102. }
  103.  
  104. int longest_word(char* str)
  105.  
  106. {
  107.     int i = 0, current_len = 0;
  108.     int max_len = 0;
  109.     int word = 0;
  110.     char* sep = " .,-_\n\t!?&";
  111.  
  112.     while(str[i]) {
  113.         if(ch_str(sep,str[i]) != -1) {
  114.  
  115.             if(word) {
  116.  
  117.                 if(current_len > max_len)
  118.                 max_len = current_len;
  119.  
  120.                 current_len = 0;
  121.                 word = 0;
  122.  
  123.         }
  124.         }
  125.         else {
  126.             word = 1;
  127.             ++current_len;
  128.         }
  129.         i++;
  130.  
  131.     }
  132.     return max_len;
  133. }
  134.  
  135. void print_words(char* str){
  136. int i = 0;
  137. int counter = 0;
  138. int word = 0;
  139. char* sep = {" .,-_\n\t!?&"};
  140. while(str[i])
  141. {
  142.     if( ch_str(sep,str[i])!= -1){
  143.     if (word){
  144.         printf("\n");
  145.         word=0;
  146.     }
  147.     }
  148.     else {
  149.         word = 1;
  150.         printf("%c", str[i]);
  151.     }
  152.  
  153.     i++;
  154. }
  155. }
  156.  
  157. void swap(char* a,char* b){
  158.     char c = *a;
  159.     *a = *b;
  160.     *b = c;
  161.     return;
  162. }
  163.  
  164. char* reverse_sub_str(char* str,int start,int end){
  165.     while(start<end){
  166.         swap(&str[start++],&str[end--]);
  167.     }
  168. return str;
  169. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top