strtok과 파일 입출력 질문입니다.
아론아브라함
FE=fopen(C:\\Program Files\\Microsoft Visual Studio\\MyProjects\\c\\mips.txt,rt);
if(FE==NULL){
printf(Not found mips text \n);
exit(1);//비정상종료
}
//text 파일을 불러온다.
while(1) //명령어 검사 부분.
{
nLineCount++;
if(fgets(chGetString,sizeof(chGetString),FE) == NULL){
break; //한줄씩 출력함.
}
pSymbol = strstr(chGetString, :); //명령어 조사하기 위해 다시 사용.
if(pSymbol == NULL) //즉 명령어에 해당되면.
{
nCommandCount++;
pToken = strtok(chGetString, ,$()\t\r\n); //토큰 파싱. chGetString의 문자열 첫 token을 찾아 번지를 리턴
printf(%s\n,pToken);
}}
----------------------------------
lw $1, 100($2)
sw $17, 200($25)
addi $1, $2, -20
j loop
loop:
bltz $3, label1
sub $3, $4, $5
label1:
lw $1, 0($3)
---------------------------
소스 일부분입니다. 일단 파일입출력으로 파일을 받고 fgets로 한줄로 문자를 입력받습니다.
그리고 조건 검사를 하고 토큰을 짜르는데요
사이트에서 보면 다음조건을 검사하기 위해서는 2번째 호출에서부터 첫번째 인자에 NULL을 넣어야 한다고 하던데 그런거 없이 한번 자르고 printf(%s\n,pToken)하니깐 바로 나오는데 어떻게 된건가요?ㅠ
빨간줄 사이의 내용들이 text파일 속 내용입니다. 그리고
strtok함수를 쓰면 토큰 검사를 해서 짜르고 그 다음 토큰의 번지를 리턴한다고 들었습니다. 제가 지금 하고 싶은게 머냐면요.
명령어 lw,sw같은 것들을 하나씩 체크해서 형식을 정해서 출력을 할려고 합니다.
그렇다면 pToken = strtok(chGetString, ,$()\t\r\n); 여기서 처음 공백이 있으니 s의 주소리턴하고 w넘어가고 공백있으니 $주소 리턴하고 머 이런식으로 쭉쭉 가는건가요?..
포인터는 배열처럼 쓸수 있으니 첨에 토큰이 저렇게 짤려서 리턴이 되면 pToken[0]머 이런식으로 해서 sw,lw를 분류해서 따로 함수 작성할려고 했는데 리턴형식을 모르겠네요..글쓰다보니 길어졌습니다 지송합니다 ㅠㅠ
이 과제 하나로 3주째 밤샘가까이 하고있네요 ㅠㅠ 파일입출력부분을 공부 안했더니 못따라가서 소스 뒤지고 난리치면서 고생중입니다 답변좀 부탁드릴게요