int FileLoad(Function ** functionDiary)
{
int i, j;
int allFunctionNum=0;
char tempstr[2000];
char fH[100], fR[100], fN[100], fP[100], fI[1600];
FILE * fp = fopen("data.txt", "rt");
printf("파일 준비중...\n");
if (fp != NULL)
{
printf("파일 준비 완료...\n");
while (1)
{
if (fgets(tempstr, 2000, fp) >0)
{
for (i = 0; i < 2000; i++)
{
if (tempstr[i] == '[' )
{
if (tempstr[i + 1] == '1')
{
if (tempstr[i + 2] == ']')
{
for (j = 0; tempstr[i+3+j] != '[';j++)
{
fH[j] = tempstr[i + 3 + j];
}
fH[j] = 0;
i += j;
}
}
}
if (tempstr[i] == '[')
{
if (tempstr[i + 1] == '2')
{
if (tempstr[i + 2] == ']')
{
for (j = 0; tempstr[i + 3 + j] != '['; j++)
{
fR[j] = tempstr[i + 3 + j];
}
fR[j] = 0;
i += j;
}
}
}
if (tempstr[i] == '[')
{
if (tempstr[i + 1] == '3')
{
if (tempstr[i + 2] == ']')
{
for (j = 0; tempstr[i + 3 + j] != '['; j++)
{
fN[j] = tempstr[i + 3 + j];
}
fN[j] = 0;
i += j;
}
}
}
if (tempstr[i] == '[')
{
if (tempstr[i + 1] == '4')
{
if (tempstr[i + 2] == ']')
{
for (j = 0; tempstr[i + 3 + j] != '['; j++)
{
fP[j] = tempstr[i + 3 + j];
}
fP[j] = 0;
i += j;
}
}
}
if (tempstr[i] == '[')
{
if (tempstr[i + 1] == '5')
{
if (tempstr[i + 2] == ']')
{
for (j = 0; tempstr[i + 3 + j] != '\n'; j++)
{
fI[j] = tempstr[i + 3 + j];
}
fI[j] = 0;
i += j;
}
}
}
}
functionDiary[allFunctionNum] = ReturnFunction(allFunctionNum, fH, fR, fN, fP, fI);
printf("파일 로드중...%d\n", allFunctionNum++);
}
else
{
if (feof(fp) != 0)
{
printf("파일 로드 완료...\n");
fclose(fp);
return allFunctionNum;
}
else
{
printf("ERROE! : f(fp) == 0\n");
fclose(fp);
return -1;
}
}
}
}
else
{
printf("ERROE! : fp == NULL\n");
fclose(fp);
return -1;
}
}
ㅅㅂ 내가 짠 코드지만 바로 다음날만 되도 몬소린지 모를거같다.
for if while천지
막 처음에는 최대한 간결하게 해야지 하는데 중간에 안돼서 코드 수정하고 그러다 보면 저꼴 나있음....
코딩 예쁘고 간결하게하는 방법론 같은거 없나
대충 보니까 텍스트로 저장된 파일을 일일이 토크닝하면서 읽어들이는 함수같은데, 걍 바이너리로 입출력하면 가독성도 좋아지고 저거보다 코드 량 확 줄일 수 잇음. 그리고 세이브 로딩 속도도 더 빨라지고
하드코딩 잘~ 한다.
1.대학생이면 일단 방법론보다는 손에 익게끔 많이 짜는것부터
2. 회사원이면....
OOP개념하고 모듈화 잘 하면 가독성 좋아지고 간결해진다. 근데 속도면에서는 언롤링하는 것이 더 빠르지만
adsf// 처음에 바이너리로 할려다가 실패함 ㅠㅠ. char 형 포인터 4개가 있는 구조체 배열 저장하고 관리하는 프로그램인데 어떤식으로 저장하고 로드해야 할지 모르겠음.
asdf// 모듈화가 뭐임??
반복되는 부분을 잘 떼어내서 함수로 만드는 거...
그리고 c의 FILE로 하지말고, c++의 std::fstream, std::ofstream, std::ifstream같은거 써라. 더 쉬워진다.
'C언어 매크로 함수' 검색해보면 저 비스무리한 3중if+for 의 향연을 훨씬 깔끔하게 변경할 수 있을듯.
asdf // 위 코드에서 문자열 [1] [2] [3] [4] [5]로 저장할 문자열들 구분하여 \n로 저장할 객체 구분하게 해놯는데 바이너리로 하면 어떻게 구분해야 될까?? 데이터 입출력 너무 어려워....
엄청 특이하네요 ㅋㅋ
if안에 if 대신 and 연삱 && 쓰시는게 어떨까요?
ㅁㄹㄴㅇㅎ// 요즘 다시 c복습중이라 c문법만 쓰는중인데 굳이 그럴필요 없는건가??
ㅅㄷㄴㅅ// 매크로함수로 if for문을 대체할수 있어요?!?! 예제같은거 없나요 배우고싶다
눈호랑이♡ // ㅠㅠ
C언어 손놓은지 3년넘은 자바 땔감이라 나도 시간 꽤나 걸림.... 좋은 따라하기 URL을 던지고 내 턴을 종료하겠음요.
http://itguru.tistory.com/99
덕후쨩 // if (tempstr[i] == '[' && tempstr[i+1] == '1' && tempstr[i+2] == ']' ) 이렇게요? 오 좀더 깔끔해 보인다
내가 검색하라는 'C언어 매크로 함수' 검색에, '예제' 더 붙여서 구글링하면 나보다 훨씬 많이 굴러댄 사람들 예제 수두룩빽빽.ㅇㅇ
ㅅㄷㄴㅅ// ㄳㄳ. 역시 프갤이 지식인보다 훨씬 좋네
그리고 if ( 변수 != NULL) 대신 IF(!변수) 해도 되지않을까요?
객체지향이니 뭐니 말이 나올 수 있는데 내가 볼 땐 글쓴이는 객체지향은 고사하고 함수라도 제대로 만들어서 써야 겠다. 보아하니 if, for, while 패턴이 동일 동작에 대해서 반복되고 있다는 생각이 들 거 같은데, 함수라는 건 그렇게 작업이 반복될 때 반복되는 작업을 원자화시켜서 코드 사이즈를 줄이는 용도임.
덕후쨩 // if(expr != NULL) 은 if(expr) 이지. 컴퓨터는 0(NULL)을 거짓, 0이 아닌 값은 참으로 보니깐.
ㅅㅅㅅ// 헉 헉헉헉 바보같이 ㅋㅋ 잘못봤어요
와....하드코딩 지린다...ㅋㅋㅋ
걍 c를 포기하고 파이썬으로 넘어와라.......신세계다..... ㅅㅂ c는 필요한데...도저히 공부하기 힘들다...책도 기본문법책만 존나 많고..응용쪽은 전멸이여
보고 우흐루으후끄인가? 그 물결치는 텍스트 생각났다...