Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <regex.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include<ctype.h>
  6.  
  7.  
  8. /*
  9. char** input(){
  10. int i = 0;
  11. int len_text = 1;
  12. int len_sen = 3;
  13. int j = 0;
  14. char c;
  15. char** text = calloc(len_text, sizeof(char*));
  16. text[i] = (char*) calloc(len_sen, sizeof(char));
  17.  
  18. do{
  19. c = getchar();
  20.  
  21. if(c == '\n'){
  22. len_text += 1;
  23. text = realloc(text, sizeof(char*)*(len_text));
  24. text[i][j] = c;
  25. text[i][j+1] = '\0';
  26. text[i+1] = (char*) calloc(3, sizeof(char));
  27. i++;
  28. j = 0;
  29. len_sen = 3;
  30. continue;
  31. } else
  32. text[i][j] = c;
  33.  
  34. if(j >= len_sen - 3){
  35. len_sen += 3;
  36. text[i] = realloc(text[i], (len_sen)*sizeof(char));
  37. }
  38. j++;
  39. }while(c != '.');
  40. text[i][0] = '\n';
  41. return text;
  42. } */
  43.  
  44.  
  45. char* input(){
  46. int size = 15;
  47. char* string = calloc(len_sen*sizeof(char));
  48.  
  49.  
  50. }
  51.  
  52.  
  53. void output(char **text, int i){
  54. for(int h = 0; h < i; h++){
  55. if(text[h][0] != '\0')
  56. printf("%s ", text[h]);
  57. }
  58. printf("\n");
  59. }
  60.  
  61.  
  62. int text_len(char** text, int i){
  63.  
  64. int j = 0;
  65. while(text[i][0] != '\n'){
  66. if(text[i][j] == '\0'){
  67. i++;
  68. j = 0;
  69. }
  70. j++;
  71. }
  72.  
  73. return i;
  74. }
  75.  
  76.  
  77. int main(){
  78.  
  79. int i = 0;
  80. size_t maxGroups = 3;
  81. regex_t regexCompiled;
  82. regmatch_t groupArray[maxGroups];
  83. char** text = input();
  84. i = text_len(text, i);
  85. char* regex_str = "\\w+@[\\w-]+: ?~ ?\\# (.+)";
  86.  
  87. if (regcomp(&regexCompiled, regex_str, REG_EXTENDED)){
  88. printf("Ошибка компиляции регулярного выражения\n");
  89. return 0;
  90. }
  91.  
  92. for(int k = 0; k < i; k++){
  93. if(!regexec(&regexCompiled, text[k], maxGroups, groupArray, 0)){
  94. for(int m=groupArray[1].rm_so; m<groupArray[1].rm_eo; m++) putchar(text[i][m]);
  95. printf(" - ");
  96. for(int m=groupArray[2].rm_so; m<groupArray[2].rm_eo; m++) putchar(text[i][m]);
  97. putchar('\n');
  98. }
  99. }
  100. output(text, i);
  101. for(int s = 0; s < i; s++){
  102. free(text[s]);
  103. }
  104.  
  105. return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement