Advertisement
uno20001

Macskak (GYK) (C)

Dec 18th, 2014
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.37 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct cica{
  6.     char *nev;
  7.     char *sor;
  8. } cica;
  9.  
  10. cica *cicakbeker(int *meret);
  11.  
  12. int main(){
  13.     int meret, i = 0;
  14.  
  15.     cica *cicak = cicakbeker(&meret);
  16.     printf("%d\n", meret);
  17.  
  18.     for(i = 0; i < meret; i++){
  19.         printf("%s\t%s\n", cicak[i].nev, cicak[i].sor);
  20.     }
  21.  
  22.  
  23.     getchar();
  24.  
  25.     return 0;
  26. }
  27.  
  28. cica *cicakbeker(int *size){
  29.     int meret = 0, vpoz = 0;
  30.     char temprow[101], *v = NULL;
  31.     cica *cicak = NULL;
  32.     memset(temprow, 0, sizeof(char) * 101);
  33.  
  34.     do{
  35.         memset(temprow, 0, sizeof(char) * 101);
  36.  
  37.         printf("%d. cica: ",meret+1);
  38.         scanf("%100s", temprow);
  39.  
  40.         if(strcmp(temprow, "*") == 0)
  41.             break;
  42.  
  43.  
  44.         v = strchr(temprow, ',');
  45.         vpoz = (int) (v-temprow);
  46.         if(meret == 0){
  47.  
  48.             cicak = (cica*) malloc(sizeof(cica) * 1);
  49.             cicak[meret].nev = (char*) malloc(sizeof(char)*(vpoz+1));
  50.             memset(cicak[meret].nev, 0, sizeof(char)*(vpoz+1));
  51.             strncpy(cicak[meret].nev, temprow, vpoz);
  52.  
  53.             cicak[meret].sor = (char*) malloc(sizeof(char)*(strlen(temprow)+1));
  54.             memset(cicak[meret].sor, 0, sizeof(char)*(strlen(temprow)+1));
  55.             strncpy(cicak[meret].sor, temprow, strlen(temprow));
  56.  
  57.         }else{
  58.             cica *cicakseged = NULL;
  59.             cicakseged = (cica*) realloc(cicak, sizeof(cica) * (meret+1)); //újrafoglalás más mérettel
  60.             if(cicakseged != NULL){
  61.                 cicak = cicakseged;
  62.             }else{
  63.                 printf("Nincs eleg memoria!");
  64.                 getchar();
  65.                 exit(0);
  66.             }
  67.  
  68.             cica *aktCica = &cicak[meret]; //az aktuális macska
  69.             memset(aktCica, 0, sizeof(cica)); //nullázzuk
  70.  
  71.             aktCica->nev = (char*) malloc(sizeof(char) * (vpoz+1)); //névnek hely lefoglal
  72.             memset(aktCica->nev, 0, sizeof(char) * (vpoz+1)); //lenulláz
  73.             strncpy(aktCica->nev, temprow, vpoz); //átmásol
  74.  
  75.             aktCica->sor = (char*) malloc(sizeof(char) * (strlen(temprow) + 1)); //sornak hely lefoglal
  76.             memset(aktCica->sor, 0, sizeof(char) * (strlen(temprow) + 1)); //lenulláz
  77.             strcpy(aktCica->sor, temprow); //átmásol
  78.  
  79.         }
  80.         meret++;
  81.  
  82.  
  83.     }while(1);
  84.  
  85.  
  86.     *size = meret;
  87.     return cicak;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement