[C언어] C언어 질문좀 올리겠습니다 ;;;
글쓴이: whitelazy / 작성시간: 월, 2004/10/04 - 12:26오전
윽.. 학교에서 유닉스 프로그래밍 수업이 있는데 이거 과제 하다가 도저히 버그를 못잡아서 질문좀 올립니다 ;;;
아래 코드에서 표시 해놓은 부분에서(전부다 for문...;;) 에러가 나는데
이유를 도저히 모르겠습니다 ㅡ.ㅜ
이넘잡고 씨름하다가 결국 제출시간도 넘겨서 메일로 보내는 놨는데.. ㅎㅎ;; 과연 받아주실련지 ;;
서버 사용자 폭주해서 못내면 멜로 받아준다곤 했었는데 어쩔지 모르겠네요 ;;;
어쨌던 코드랑 에러내용입니다 ;;
105번 라인 에러는 99번라인 에러때문에 딸려 나오는듯은 하구요..
결국은 99번이랑 118번이랑 141번라인 에러를 잡아야한다는데 모르겠습니다...
학교 유닉스 서버에 넣고 돌려보니 전부다 for문뒤에 ';' 요거 세미콜론이 없다고 나오구요 ;; 분명 그담에 블록으로 잡아줬으니 문제가 없을듯한데 도저히 모르겠습니다 :oops: :oops: :oops: :oops: :oops:
이것때문이 아닐까 하시는점 있으시면 좀 알려주십시오;;;
p.s. 음.. code안에서는 볼드못하나보네요 ;;
p.s.2 아직 배우는 입장이니 코드 별로 안이뻐도 양해를 바랍니다 8)
#include<stdio.h> #include<fcntl.h> #include<unistd.h> //define #define NAMELENGTH 41 #define NROOMS 10 //variable char namebuf[NAMELENGTH]; int infile = -1; //Function char *getoccupier(int roomno); int findfree(void); int freeroom(int ); int addguest(int , char * ); int main(int argc, char *argv[]) { char command, inputbuf[NAMELENGTH]; int nroom, i; if( (infile = open("residents", O_RDWR | O_CREAT)) == -1) { printf("can't open file"); exit(1); } while(1) { printf("Add guest : a,Free Room : f,Get guest name : g,Quit : q\n"); printf("input : "); command = getchar(); switch(command) { case 'a' : printf("input Occupier's Name: "); i = 0; while( (inputbuf[i++] = getchar()) != '\n'); nroom = findfree(); addguest(nroom, inputbuf); break; case 'f' : printf("input Room number"); i = 0; while( (inputbuf[i++] = getchar()) != '\n'); nroom = atoi(inputbuf); if(freeroom(nroom)) printf("can't free room"); else printf("Success free room"); break; case 'g' : printf("input Room number"); i = 0; while( (inputbuf[i++] = getchar()) != '\n'); nroom = atoi(inputbuf); if(getoccupier(nroom)) printf("%s in ROOM %d\n", namebuf, nroom); else printf("ROOM %d is empty", nroom); break; case 'q' : printf("quit this program bye~"); close(infile); exit(0); default : break; } fflush(stdin); } } char *getoccupier(int roomno) { off_t offset; ssize_t nread; offset = (roomno - 1) * NAMELENGTH; // seeking room and reading name if( lseek(infile, offset, SEEK_SET) == -1) return (NULL); if( (nread = read(infile, namebuf, NAMELENGTH)) <= 0) return (NULL); namebuf[nread-1] = '\0'; //change '\n' to '\0' return namebuf; } int findfree() { int i = 0; for(i = 1, i <= NROOMS, i++ ) // 여기랑 { getoccupier(i); if( namebuf[0] == ' ') return i; } return (-1); } int freeroom(int roomno) { int i; off_t offset; offset = (roomno -1) * NAMELENGTH; if(lseek(infile, offset, SEEK_SET) == -1) return (-1); for(i = 0, i < NAMELENGTH - 1, i ++) //여기랑...;; namebuf[i] = ' '; namebuf[NAMELENGTH-1] = '\n'; if( write(infile, namebuf, NAMELENGTH) != NAMELENGTH) return (-1); return (0); } int addguest(int roomno, char *guest) { int i; off_t offset; offset = (roomno -1)*NAMELENGTH; getoccupier(roomno); if(namebuf[0] != ' ') { printf("ROOM %s is full", roomno); return (-1); } for(i = 0, i < (NAMELENGTH -1), i++) //여기입니다 namebuf[i] = ' '; namebuf[NAMELENGTH-1] = '\n'; i = 0; while(guest[i] != '\0') { namebuf[i] = guest[i]; } if( lseek(infile, offset, SEEK_SET) == -1) return (-1); if(write(infile, namebuf, NAMELENGTH) <= 0) return (-1); return 0; }
Quote:
exam2_9.c: In function `findfree':
exam2_9.c:99: error: parse error before ')' token
exam2_9.c: At top level:
exam2_9.c:105: error: parse error before "return"
exam2_9.c: In function `freeroom':
exam2_9.c:118: error: parse error before ')' token
exam2_9.c: In function `addguest':
exam2_9.c:141: error: parse error before ')' token
Forums:
for문의 문법을 다시 공부하세요.for(initial-clause;
for문의 문법을 다시 공부하세요.
for(initial-clause;expression;expression) 이런식입니다.
for( , , ) 이런 식으로 쓰셨네요?? :shock: fo
for( , , ) 이런 식으로 쓰셨네요?? :shock:
for( ; ; ) 이렇게 써야 하는데...
문근영 너무 귀여워~~
악 ;;;;;;;;;간만에 프로그래밍하다가 사고쳤군요 ㅡ_ㅡ;;;;;
악 ;;;;;;;;;
간만에 프로그래밍하다가 사고쳤군요 ㅡ_ㅡ;;;;;;;;;;;
죽어야지;;;
감사합니다 ㅠ_ㅠ
왜 그걸 못봤는지.......
으으 역시 마음이 조급하면 못보는군요 ㅠ_ㅠ
이거 고치니 컴파일은 되는군요 물론 실행'만'되고 제대로 동작은 안되네요 ㅎㅎ
버그잡아야겠습니다 ;; :oops:
댓글 달기