Advertisement
Guest User

Untitled

a guest
May 19th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.35 KB | None | 0 0
  1. #include <stdio.h> //Am sters aproape toate liniile din fisier, pentru ca imi e mai
  2. #include <stdlib.h> //usor sa vad daca programul merge bine.
  3. #include <string.h>
  4.  
  5. #define SIZELINE 100
  6.  
  7. typedef struct node //struct pentru lista
  8. {
  9. char songName[SIZELINE];
  10. struct node *next;
  11. }LIST;
  12.  
  13. FILE *pFile; //pointer pentru fisierul initial
  14. FILE *pTitleFile; //pointer pentru fisierul in care se vor scrie doar titlurile
  15.  
  16. char singleLine[SIZELINE]; //variabila pentru fisierul initial
  17. char singleLineFromTitleFile[SIZELINE]; //variabila pentru fisierul care se va creea
  18.  
  19. char *title; //token pentru strtok
  20.  
  21. int main()
  22. {
  23.  
  24. pTitleFile=fopen("onlyTitles.txt","w"); //deschid fisierul care va fi creat
  25.  
  26. pFile=fopen("classic-rock-song-list.csv","r"); //deschid fisierul care este dat
  27.  
  28. int commaCounter=0; //contor pentru virgule
  29. int songsCounter=0; //contor pentru cate cantece sunt in fisierul dat P.S: am sters majoritatea pentru a-mi fi mai usor
  30.  
  31. if(pTitleFile==NULL)
  32. {
  33. printf("File doesn't exist!\n"); //verificare fisier creat
  34. }
  35.  
  36. if(pFile==NULL)
  37. {
  38. printf("File doesn't exist!\n"); //verificare fisier dat
  39. }
  40.  
  41. while(fgets(singleLine,SIZELINE,pFile) != NULL) //loop pentru preluarea informatiilor din fisierul dat
  42. {
  43.  
  44. title=strtok(singleLine,",");
  45. commaCounter=1; //fortez doar pana la prima virgula
  46.  
  47. if(commaCounter==1)
  48. {
  49. printf("%s\n",title); //printare titlu in terminal
  50. fprintf(pTitleFile,"%s\n",title); //printare titlu in noul fisier
  51. }
  52.  
  53. songsCounter++; //iterare pentru numarul de cantece
  54.  
  55. }
  56.  
  57.  
  58. fclose(pFile); //inchid fisierul dat
  59. fclose(pTitleFile); //inchid fisierul creat
  60.  
  61. printf("\nWe have printed %d title songs\n",songsCounter);
  62.  
  63. printf("\n");
  64.  
  65.  
  66.  
  67. LIST *head; //creez o variabila pentru capul listei
  68. LIST *current; //creez o variabila pentru nodul curent
  69.  
  70. head=current=NULL; //initializez cele doua variabile cu NULL
  71.  
  72.  
  73. pTitleFile=fopen("onlyTitles.txt","r"); //deschid fisierul creat doar cu titlurile dar de aceasta data il citesc
  74.  
  75. if(pTitleFile==NULL)
  76. {
  77. printf("File doesn't exist!\n"); //verific fisierul doar cu titlurile
  78. }
  79.  
  80. while(fgets(singleLineFromTitleFile,SIZELINE,pTitleFile) != NULL) //loop pentru preluarea informatiilor din fisier
  81. {
  82. LIST *node=malloc(sizeof(LIST)); //aloc dinamic un node
  83.  
  84. strcpy(node->songName,singleLineFromTitleFile); //copiem in nodul de tip char valoarea extrasa din fisier
  85. node->next=NULL; //initializam urmatorul nod cu NULL
  86.  
  87. if(head==NULL)
  88. {
  89. current=head=node; //daca head este NULL current si node sunt egale cu head
  90. }
  91. else
  92. {
  93. current=current->next=node;
  94. }
  95. }
  96.  
  97. fclose(pTitleFile); //inchid fisierul cu titlurile
  98.  
  99. for(current=head ; current ; current=current->next)
  100. {
  101. printf("%s",current->songName); //print pentru fiecare nod
  102. free(current); //eliberez memoria pentru fiecare nod
  103. }
  104.  
  105. printf("\n");
  106.  
  107.  
  108.  
  109. return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement