Advertisement
Guest User

huoh

a guest
Oct 30th, 2014
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.84 KB | None | 0 0
  1. typedef struct {
  2.   char *user;
  3.   char *topic;
  4.   char *error;
  5. } topic_match;
  6.  
  7. /*
  8.  * tämän siis PITÄIS palauttaa ennemmin viesti tyyliin "topikki <topik> löyty ja sen laitto käyttäjä <käyttäjä>"
  9.  * mut vitun sprintf aiheuttaa virheitä (sen takia myös regcomp ei suostunu toimimaan!)
  10.  * toimii mut mut ihan vitun vammasta paskaa
  11.  * tää lukee topicit tekstitiedostosta jossa ne on tyyliin <käyttäjä>\t<topic>\n
  12.  */
  13. topic_match find_topic_match(char *search) {
  14.     printf("search %s\n",search);
  15.     regex_t regex;
  16.     int reti;
  17.  
  18.     puts(pattern);*/
  19.     char *pattern = "(\\b|[!:.,])";
  20.     int total_len = 2*strlen(pattern)+strlen(search)+1;
  21.     char *str = (char *)malloc(total_len);
  22.     strcat(str,pattern);
  23.     strcat(str,search);
  24.     strcat(str,pattern);
  25.     printf("str: %s\n",str);
  26.    
  27.     /*mitä helvetitä, kun pistin ton formatin ja searchin sprintf:llä char * tyyliseen muuttujaan nii regcomp ei onnistunu
  28.      * vittu miten vammasta, nyt kuitenkin toimii*/
  29.     reti = regcomp(&regex,str,REG_EXTENDED);
  30.      
  31.     FILE *file;
  32.     char line[300];
  33.     file = fopen("topicit.txt","r");
  34.    
  35.     topic_match match;
  36.     match.user="";
  37.     match.topic="";
  38.    
  39.     while(fgets(line,300,file) != NULL) {
  40.         rtrim(line);
  41.         /* jos vikalla rivillä on vaan tyhjämerkkejä jostain syystä nii turha parsia useria ja topiccia */
  42.     if(strlen(line) == 0) {
  43.         break;
  44.     }
  45.    
  46.     char *user = strtok(line,"\t");
  47.     char *topic = strtok(NULL,"\t");
  48.     printf("topic: %s user: %s\n",topic,user);
  49.     reti = regexec(&regex,topic,0,NULL,0);
  50.    
  51.     if(!reti) {
  52.         match.user = user;
  53.         match.topic = topic;
  54.         match.error = "";
  55.         break;
  56.     }
  57.     }
  58.    
  59.     fclose(file);
  60.     free(str);
  61.     regfree(&regex);
  62.    
  63.     if(strlen(match.topic) == 0) {
  64.         match.error = "not found!";
  65.     }
  66.  
  67.     return match;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement