Advertisement
Guest User

Untitled

a guest
Oct 9th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.10 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <conio.h>
  5. #include <string.h>
  6.  
  7. FILE *f;
  8.  
  9. typedef struct stud {
  10. char* nume[20], data_n[10];
  11. char* matricola[6];
  12. char* adr[30];
  13. }
  14. studenti; //numele tipului
  15.  
  16. studenti a[50];
  17.  
  18. /*Problema Laorator 2: intr-un fisier aveti inregistrari cu datele personale ale studentilor*/
  19. /*Fiecare inregistrare este memorata pe un rand din fisier si contine urmatoarele campuri: nume prenume de tipul char[20], nr matricol string[6]*/
  20. /*data nasterii de tip char, adresa de tip char[30]*/
  21. /*data nasterii zz/ll/aaaa*/
  22. /*se face validarea inregistrarilor fara cifre in nume si fara litere in numarul matricol, ;itere in data nasterii*/
  23. /*daca validarea este ok, datele se salveaza intr-un alt fisier, daca nu este ok se da mesaj de eroare pentru campul respectiv si se trece la urmatoarea*/
  24. /*inregistrare din fisierul de intrare*/
  25.  
  26. void Salvare (char x[70], int i)
  27. {
  28. char * parte, pozitie = 0;;
  29. FILE *o;
  30.  
  31. parte = strtok (x,",");
  32. *a[i].nume = parte;
  33. while (parte != NULL)
  34. {
  35. parte = strtok (NULL, ",");
  36. if(pozitie == 0) *a[i].data_n = parte;
  37. if(pozitie == 1) *a[i].matricola = parte;
  38. if(pozitie == 2) *a[i].adr = parte;
  39. }
  40.  
  41. o = fopen("studenti.out","wt");
  42. fputs(a[i].nume, o);
  43. fputs(a[i].data_n, o);
  44. fputs(a[i].matricola, o);
  45. fputs(a[i].adr, o);
  46. fclose(o);
  47. }
  48.  
  49. void validare(char x[70], int i)
  50. {
  51.  
  52. const char *invalid_characters_nume = "1234567890";
  53. const char *invalid_characters_date = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
  54. char * parte, pozitie = 0;
  55. char valid = 0;
  56.  
  57. parte = strtok(x,",");
  58. while (parte != NULL)
  59. {
  60. parte = strtok (NULL,",");
  61. char *c = parte;
  62. while (*c)
  63. {
  64. if(pozitie == 0){
  65. if (strchr(invalid_characters_nume, *c))
  66. {
  67. printf("Sunt interzise cifre in nume.");
  68. valid = 0;
  69. return;
  70. }
  71. }
  72. else
  73. if (strchr(invalid_characters_date, *c))
  74. {
  75. printf("Sunt interzise litere in matricol/data nasterii.");
  76. valid = 0;
  77. return;
  78. }
  79. c++;
  80. valid = 1;
  81. }
  82. }
  83. if(valid) Salvare(x,i);
  84. return;
  85. }
  86.  
  87. void Citire()
  88. {
  89. int n = 0;
  90. char* x;
  91.  
  92. f = fopen("studenti.in","rt");
  93. if (f == NULL) printf("Eroare de deschidere a fisierului.");
  94. else {
  95. while ( fgets (x , 70 , f) != NULL )
  96. {
  97. x = fgets(x,70,f);
  98. validare(x,n);
  99. n++;
  100. }
  101. fclose (f);
  102. }
  103. return;
  104. }
  105.  
  106.  
  107. int main()
  108. {
  109. int alegere = -1;
  110. do{
  111. printf("\n--------------------------------------Gestiune studenti------------------------------------------");
  112. printf("\n\nMENIU");
  113. printf("\n1. Citire");
  114. printf("\n2. Iesire");
  115. printf("\n\n Optiune:");
  116. scanf("%d",&alegere);
  117.  
  118. switch(alegere)
  119. {
  120. case 1:
  121. Citire();
  122. break;
  123. case 2:
  124. break;
  125. default:
  126. printf("EROARE :P");
  127. break;
  128. }
  129.  
  130. } while(alegere!=2);
  131.  
  132. return 0;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement