Select Git revision
performanceRoute.js
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;
}