Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.69 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement