Skip to content
Snippets Groups Projects
Select Git revision
  • 96c2b83a5771bb1894026cceb0823356689a75cf
  • master default
2 results

main.c

Blame
  • Forked from HyukSang Kwon / 1801_OS_assignment4
    Source project has a limited visibility.
    main.c 2.23 KiB
    #include "alloc.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h>
    #include <string.h>
    
    extern int fit;
    char *tok;
    
    
    
    int main(int argc, char *argv[])
    {
      if(argc != 2){ //인자 에러체크
        printf("input error argc: %d\n", argc);
        exit(1);
      }
    
      FILE *file;
      char buffer[1024];
      char *tok;
      
      if(!(file = fopen(argv[1], "r"))){//file open & error check
        printf("file open error\n");
        exit(1);
      }fgets(buffer, sizeof(buffer), file);
    
    //  printf("11111\n");
    
      tok = strtok(buffer, " ");
      int buf_num = atoi(buffer); //숫자 문자열->정수형, 개수
      if(!buf_num){
        printf("buf error\n");
        exit(1);
      }
    
      tok = strtok(NULL, " "); //FIT 0 1 2(first best worst)
      if(tok[0] == 'F'){
        fit = 0; //first
      }
      else if(tok[0] == 'B'){
        fit = 1; //best
      }
      else if(tok[0] == 'W'){
        fit = 2; //worst
      }
      else{
        printf("fit type error\n");
        exit(1);
      }
    
     // printf("2222\n");
    //-----------------------------------------------------------//
      char **words = (char**)malloc(sizeof(char*)*buf_num);
      int j = 0;
      int length;
      int index;
      int num;
      char* tmp;
    
      for(int i = 0; i < buf_num; i++){//buf_num만큼 반복작업
    //	  printf("3333\n");
        memset(buffer, " ", sizeof(buffer)); //memset
        fgets(buffer, sizeof(buffer), file);
      //  printf("4444\n");
        if((tmp = strchr(buffer, '\n')) != NULL)
    	    *tmp = '\0';//문자열 맨뒤의 \n 제거
    
        if(buffer[0] == 's'){//string
    //	    printf("s\n");
          length = strlen(buffer+2);
          words[j] = m_malloc(length+1);
          strcpy(words[j++], buffer+2);
        }
        else if(buffer[0] == 'f'){//free
          m_free(words[atoi(buffer+2)/*index*/]);
        }
        else if(buffer[0] == 'r'){//realloc
    	    printf("r\n");
          tok = strtok(buffer+2, " ");//쪼개고
          index = atoi(tok); //n번째
          tok = strtok(NULL, " ");
          length = atoi(tok); //m byte만큼 할당
        //  printf("%d, %d\n", index, length);
          m_realloc(buffer[index], length);
        }
        else if(buffer[0] == 'e'){//e = allocate mem sapce
          buffer[j++] = m_malloc(atoi(buffer+2)/*index*/);
        }else{//error check
          printf("error!\n");
          exit(1);
        }
      }
    //---------------------------------------------------------------//
    //printf("asdad\n");
      print_all();
      return 0;
    }