Don't like ads? PRO users don't see any ads ;-)
Guest

COME POTOS

By: aciidow on Jun 2nd, 2012  |  syntax: C  |  size: 5.71 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define MAX 60058
  6.  
  7. typedef struct nodeData{
  8.         char ID[MAX];
  9.         char Author[MAX];
  10.         char Title[MAX];
  11.         char Journal[MAX];
  12.         char Publisher[MAX];
  13.         char Address[MAX];
  14.         char Type[MAX];
  15.         char Language[MAX];
  16.         char ISSN[MAX];
  17.         char Number_Cited[MAX];
  18. }data;
  19.  
  20. typedef struct nodeTree{
  21.         data d;
  22.         struct nodeTree *left,*right;
  23. }tree;
  24.  
  25. typedef struct nodeList{
  26.         data d;
  27.         struct nodeList *nxt;
  28. }list;
  29.  
  30. /* FUNCTIONS */
  31. /* */
  32. void loadFile(list **r);
  33. /* */
  34. void search();
  35. /* */
  36. data loadData(char a[], char b[], char c[], char d[], char e[], char f[], char g[], char h[], char i[], char j[]);
  37. /* */
  38. void insertTree(tree **r, data d);
  39. /* */
  40. void insertList(list **h, data d);
  41. /* */
  42. void mostrarLista(list **h);
  43. /* */
  44. char *delete (char string[],int type, char stringaux[]);
  45. /* */
  46. void freestring (char string[]);
  47.  
  48. int main(){
  49.         int option=0;
  50.         //tree *root=NULL;
  51.         list *head=NULL;
  52.         loadFile(&head);
  53.        
  54.         printf("[[ DATA LOADED SUCCEFULY. PRESS ANY KEY TO CONTINUE...]]"); getchar();getchar();
  55.        
  56.         do{
  57.                 system("clear"),
  58.                 printf("\t::MENU::\n1.Search\n2.Modify\n3.Delete\n4.Exit\nOPTION: ");
  59.                 scanf("%i",&option);
  60.                 switch(option){
  61.                         case 1:
  62.                                 search();
  63.                                 break;
  64.                         case 2:
  65.                                 mostrarLista(&head);
  66.                                 break;
  67.                         case 3:
  68.                                 break;
  69.                         case 4:
  70.                                 printf("\nGoodbye n_n"); exit(0);
  71.                 }
  72.         }while(option!=4);
  73.         return 0;      
  74. }
  75.  
  76. void loadFile(list **head){
  77.         FILE *pf=fopen("db.bib","r");
  78.         data dataNode;
  79.         int cont=1;
  80.         if(!pf) printf("\nFile doesn't exist");
  81.         char string[MAX],saux[MAX];
  82.         char a[MAX],b[MAX],c[MAX],d[MAX],e[MAX],f[MAX],g[MAX],h[MAX],i[MAX],j[MAX];
  83.         char end[]="}},";
  84.         while(fgets(string,MAX,pf)){
  85.                 if(strstr(string,"@article{ ISI:")){
  86.                         strcpy(a,strchr(string,':')+1);
  87.                         strcpy(a,delete(a,2,saux));
  88.                         cont++;
  89.                 }      
  90.                 else if(strstr(string,"Author = {")){
  91.                         strcpy(b,strchr(string,'{')+1);
  92.                         while(!strstr(string,"},"))
  93.                                 strcat(b,fgets(string,MAX,pf));
  94.                         strcpy(b,delete(b,2,saux));
  95.                         cont++;
  96.                 }
  97.                 else if(strstr(string,"Title = {{")){
  98.                         strcpy(c,strrchr(string,'{')+1);
  99.                         while(!strstr(string,end))
  100.                                 strcat(c,fgets(string,MAX,pf));
  101.                         strcpy(c,delete(c,3,saux));
  102.                         cont++;
  103.                         }
  104.                 else if(strstr(string,"Journal = {{")){
  105.                         strcpy(d,strrchr(string,'{')+1);
  106.                         while(!strstr(string,end))
  107.                                 strcat(d,fgets(string,MAX,pf));
  108.                         strcpy(d,delete(d,3,saux));
  109.                         cont++;
  110.                         }
  111.                 else if(strstr(string,"Publisher = {{")){
  112.                         strcpy(e,strrchr(string,'{')+1);
  113.                         while(!strstr(string,end))
  114.                                 strcat(e,fgets(string,MAX,pf));
  115.                         strcpy(e,delete(e,3,saux));
  116.                         cont++;
  117.                         }
  118.                 else if(strstr(string,"Address = {{")){
  119.                         strcpy(f,strrchr(string,'{')+1);
  120.                         while(!strstr(string,end))
  121.                                 strcat(f,fgets(string,MAX,pf));
  122.                         strcpy(f,delete(f,3,saux));
  123.                         cont++;
  124.                         }
  125.                 else if(strstr(string,"Type = {{")){
  126.                         strcpy(g,strrchr(string,'{')+1);
  127.                         while(!strstr(string,end))
  128.                                 strcat(g,fgets(string,MAX,pf));
  129.                         strcpy(g,delete(g,3,saux));    
  130.                         cont++;
  131.                         }
  132.                 else if(strstr(string,"Language = {{")){
  133.                         strcpy(h,strrchr(string,'{')+1);
  134.                         while(!strstr(string,end))
  135.                                 strcat(h,fgets(string,MAX,pf));
  136.                         strcpy(h,delete(h,3,saux));
  137.                         cont++;
  138.                         }
  139.                 else if(strstr(string,"ISSN = {{")){
  140.                         strcpy(i,strrchr(string,'{')+1);
  141.                         while(!strstr(string,end))
  142.                                 strcat(i,fgets(string,MAX,pf));
  143.                         strcpy(i,delete(i,3,saux));
  144.                         cont++;
  145.                         }
  146.                 else if(strstr(string,"Number-of-Cited-References = {{")){
  147.                         strcpy(j,strrchr(string,'{')+1);
  148.                         while(!strstr(string,end))
  149.                                 strcat(j,fgets(string,MAX,pf));
  150.                         strcpy(j,delete(j,3,saux));
  151.                         cont++;
  152.                 }
  153.                 if(cont==10){
  154.                         dataNode=loadData(a,b,c,d,e,f,g,h,i,j);
  155.                         insertList(&(*head),dataNode);
  156.                         cont=0;
  157.                 }
  158.                 freestring(saux);
  159.         }
  160. }
  161.  
  162. void search(){
  163.         int option=0;
  164.         char search[100];
  165.         printf("\n\t.:Searching Atribute:.\n1.Author\n2.Title\n3.Year\n4.Journal\n5.Publisher\nATRIBUTE: ");
  166.         scanf("%i",&option);
  167.         switch(option){
  168.                 case 1:
  169.                         printf("\nAUTHOR: ");
  170.                         scanf(" %[^\n]",search);
  171.                         break;
  172.                 case 2:
  173.                         printf("\nTITLE: ");
  174.                         scanf(" %[^\n]",search);
  175.                         break;
  176.                 case 3:
  177.                         printf("\nYEAR: ");
  178.                         scanf(" %[^\n]",search);
  179.                         break;
  180.                 case 4:
  181.                         printf("\nJOURNAL: ");
  182.                         scanf(" %[^\n]",search);
  183.                         break;
  184.                 case 5:
  185.                         printf("\nPUBLISHER: ");
  186.                         scanf(" %[^\n]",search);
  187.                         break;
  188.         }
  189. }
  190.  
  191. data loadData(char a[], char b[], char c[], char d[], char e[], char f[], char g[], char h[], char i[], char j[]){
  192.         data node;
  193.         strcpy(node.ID,a);
  194.         strcpy(node.Author,b);
  195.         strcpy(node.Title,c);
  196.         strcpy(node.Journal,d);
  197.         strcpy(node.Publisher,e);
  198.         strcpy(node.Address,f);
  199.         strcpy(node.Type,g);
  200.         strcpy(node.Language,h);
  201.         strcpy(node.ISSN,i);
  202.         strcpy(node.Number_Cited,j);
  203.         return node;   
  204. }
  205.  
  206. void insertList(list **h, data d){
  207.         list *newNode,*aux=*h;
  208.         newNode=(list *)malloc(sizeof(list));
  209.         newNode->nxt=NULL;
  210.         newNode->d=d;
  211.         if(!*h)
  212.                 *h=newNode;
  213.         else{
  214.                 while(aux->nxt)
  215.                         aux=aux->nxt;
  216.                 aux->nxt=newNode;
  217.         }      
  218. }
  219.  
  220. void mostrarLista(list **h){
  221.         list *aux=*h;
  222.         int i=1;
  223.        
  224.         while(aux){
  225.                 printf("%i) ID: %s\nAUTHOR: %s\nTITLE: %s\nJOURNAL: %s\nPUBLISHER: %s\nADRESS: %s\nTYPE: %s\nLANGUAGE: %s\nISSN: %s\nNUMBER CITED: %s\n\n",i,aux->d.ID,aux->d.Author,aux->d.Title,aux->d.Journal,aux->d.Publisher,aux->d.Address,aux->d.Type,aux->d.Language,aux->d.ISSN,aux->d.Number_Cited);
  226.                 aux=aux->nxt;
  227.                 i++;
  228.         }
  229.         getchar();getchar();
  230. }
  231.  
  232. char *delete (char string[],int type,char stringaux[]){
  233.         int i=0;
  234.         i=strlen(string);
  235.         switch(type){
  236.                 case 1:
  237.                         strncpy(stringaux,string,i-2);
  238.                         break;
  239.                 case 2:
  240.                         strncpy(stringaux,string,i-3);
  241.                         break;
  242.                 case 3:
  243.                         strncpy(stringaux,string,i-4);
  244.                         break;
  245.         }
  246.        
  247.         return stringaux;
  248. }
  249.  
  250. void freestring (char string[]){
  251.         int i=0;
  252.        
  253.         for(i=0;i<MAX;i++)
  254.                         string[i]='\0';
  255. }