Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <stdio.h>
  5. #include <locale.h>
  6.  
  7. int odczyt_pliku(struct obraz* hp1);
  8. void zwalnianie_pamieci(struct obraz* hp1);
  9.  
  10. struct obraz
  11. {
  12. char *nazwa_pliku;
  13. char standard;
  14. int szerokosc;
  15. int wysokosc;
  16. int zakres;
  17. int** piksele; //tablica na piksele
  18.  
  19.  
  20. };
  21.  
  22.  
  23. int main()
  24. {
  25. int x;
  26. int wybor = 0;
  27. int nazwa[100];
  28. struct obraz* hp1;
  29. hp1 = (struct obraz*)malloc(1 * sizeof(struct obraz));
  30.  
  31.  
  32.  
  33. do
  34. {
  35. puts("Menu");
  36. puts("1.Odczyt");
  37. puts("2.Wyjscie");
  38. wybor = getch();
  39. system("cls");
  40. switch (wybor)
  41. {
  42. case ('1'):
  43.  
  44. x = odczyt_pliku(hp1);// odczyt z pliku
  45. if (x == 0)
  46. {
  47. puts("Blad");
  48. exit(0);
  49. }
  50. else
  51. {
  52. //zwalnianie_pamieci(&hp1);// zwolnienie pamieci w tablicy 2d
  53. }
  54. break;
  55.  
  56. case ('2'):
  57. exit(0);
  58. break;
  59.  
  60. default:
  61. break;
  62. }
  63.  
  64. } while (wybor != '2');
  65. return 0;
  66.  
  67.  
  68. }
  69.  
  70. int odczyt_pliku(struct obraz* hp1)
  71. {
  72. FILE* plik;
  73. char komentarze;
  74. hp1->nazwa_pliku = (char*)malloc(100 * sizeof(char));//alokacja tablicy z nazwa
  75.  
  76. printf("Podaj nazwe pliku:\n");
  77. scanf("%s", hp1->nazwa_pliku);//wczytanie nazyw obrazu
  78.  
  79. plik = fopen(hp1->nazwa_pliku, "r");//otwarcie pliku o podanej nazwie
  80. if (plik == NULL)//czy plik sie otworzyl
  81. {
  82. perror("Tablice.csv");//komunikat dlaczego blad
  83. return 0;
  84. }
  85. else
  86. puts("Znaleziono plik");
  87.  
  88. fscanf(plik, "%c", &komentarze);
  89. while (komentarze == '#')//szukanie komentarzy
  90. {
  91. while (komentarze!='\n')//dopoki nie jest nowa linia
  92. {
  93. fscanf(plik, "%c", &komentarze);
  94.  
  95. }
  96. fscanf(plik, "%c", &komentarze);//przeskok do nowej lini
  97.  
  98. }
  99.  
  100. fseek(plik, -1, SEEK_CUR); //przesuniecie znacznika pliku o jeden w tył
  101. fscanf(plik, "%s", &hp1->standard);//musi być na adres :)(hp1->wysokosc) * sizeof&(hp1->piksele)
  102.  
  103. fscanf(plik, "%c", &komentarze);
  104. while (komentarze == '#')
  105. {
  106. while (komentarze != '\n')
  107. {
  108. fscanf(plik, "%c", &komentarze);
  109.  
  110. }
  111. fscanf(plik, "%c", &komentarze);
  112.  
  113. }
  114.  
  115. fseek(plik, -1, SEEK_CUR);
  116. fscanf(plik, "%d", &hp1->szerokosc);
  117.  
  118. fscanf(plik, "%c", &komentarze);
  119. while (komentarze == '#')
  120. {
  121. while (komentarze != '\n')
  122. {
  123. fscanf(plik, "%c", &komentarze);
  124.  
  125. }
  126. fscanf(plik, "%c", &komentarze);
  127.  
  128. }
  129.  
  130. fseek(plik, -1, SEEK_CUR);
  131. fscanf(plik, "%d", &hp1->wysokosc);
  132.  
  133. fscanf(plik, "%c", &komentarze);
  134. while (komentarze == '#')
  135. {
  136. while (komentarze != '\n')
  137. {
  138. fscanf(plik, "%c", &komentarze);
  139.  
  140. }
  141. fscanf(plik, "%c", &komentarze);
  142.  
  143. }
  144. fseek(plik, -1, SEEK_CUR);
  145. fscanf(plik, "%d", &hp1->zakres);
  146.  
  147. //deklaracja pamieci na tablice 2 wymiary
  148.  
  149. hp1->piksele=(int**)malloc(hp1->wysokosc * sizeof(int));//hp1->piksele = malloc((hp1->wysokosc * hp1->szerokosc * sizeof(int)));
  150. if(hp1->piksele!=NULL)
  151. {
  152. for (int i = 0; i < (hp1->wysokosc); i++)
  153. {
  154.  
  155. hp1->piksele[i] = (int*)malloc(hp1->szerokosc * sizeof(int));//alokacja tablicy na odpowiednin rozmiar
  156. if (hp1->piksele[i]==NULL)
  157. {
  158. return 0;
  159. }
  160.  
  161. }
  162.  
  163. for (int i = 0; i < hp1->wysokosc ; i++)//wpisanie wartosci z pliku
  164. {
  165. for (int j = 0; j < hp1->szerokosc - 1; j++)
  166. {
  167. fscanf(plik, "%c", &komentarze);//czyta znak
  168.  
  169.  
  170. while (komentarze == '#')//jezeli komentarz
  171. {
  172. while (komentarze != '\n')//dopóki nie \n
  173. {
  174. fscanf(plik, "%c", &komentarze);
  175.  
  176. }
  177. fscanf(plik, "%c", &komentarze);
  178.  
  179. }
  180. fseek(plik, -1, SEEK_CUR);
  181.  
  182. fscanf(plik, "%d", &hp1->piksele[j][i]);
  183.  
  184.  
  185. }
  186.  
  187. }
  188.  
  189. printf("standard:%s\n", &hp1->standard);
  190. }
  191. else
  192. {
  193. puts("problem z alokacja tablicy");
  194. fclose(plik);
  195. return 0;
  196. }
  197.  
  198.  
  199.  
  200. fclose(plik);
  201. return 1;
  202.  
  203.  
  204. }
  205.  
  206. void zwalnianie_pamieci(struct obraz* hp1)
  207. {
  208.  
  209. for (int i = 0; i < (hp1->wysokosc); i++)
  210. {
  211. free((hp1->piksele[i]));
  212. puts("zwalniam");
  213. }
  214. //free(&(hp1->piksele));
  215.  
  216.  
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement