화일에서 숫자를 읽어 오려하는데, 예외처리를 어떻게 해야 할까
글쓴이: lacovnk / 작성시간: 월, 2004/04/12 - 11:38오전
file에 다음과 갈이 저장되어있습니다.
숫자\t숫자\t.......숫자\t\n 숫자\t숫자\t.......숫자\t\n 숫자\t숫자\t.......숫자\t\n 숫자\t숫자\t.......숫자\t\n
이를 차례로 읽어오고, 만약 \n이나 EOF를 만나면 예외라고 알려주고 싶은데,
이를 어떻게 해야 할까요?
1. fscanf("%d\t",buffer) 를 이용하는건, EOF가 아니고 매칭이 안될 경우 0을 돌려보낸다고 맨페이지에 있어서 포기
2. fgetc()로 계속 읽어들이면서, \t를 만나면 이전까지 읽은 char들을 이용하여 int로 변환
-> 꽤 귀찮게 될것 같은데.. char* 를 선언해야 할테고.. sptrinf를 쓰려면 순서가 뒤바뀌니 곧바로 사용을 할수도 없을 테고...
지금 두가지를 생각해 봤는데, 좋은 방법이 없을까요?
Forums:


Re: 화일에서 숫자를 읽어 오려하는데, 예외처리를 어떻게 해야
strtok() , strtok_r() 함수를 사용하시는 건 어떤가요?
더 이상 읽을 토큰이 없다면 NULL 을 리턴해 주니 나름대로 괜찮을 것 같은데요...
fgets()으로 한 라인씩 읽은후 각 라인에대해 strtok()를 이용
fgets()으로 한 라인씩 읽은후 각 라인에대해 strtok()를 이용하면 되지 않을까요
strtok는 man 하면 사용법 예제 까지 나오니 여기에 따로 적을 필요는 없을 듯 합니다.
Re: 화일에서 숫자를 읽어 오려하는데, 예외처리를 어떻게 해야
fscanf( " %d", buffer );이 정도만 해도 될듯 한데요 ;)
앞에 공백을 넣어주면 탭이나 뉴라인.. 스페이스등의 공백은 무시하니까요 ;)
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
고심하여서... 다음과 같이 결정했습니다.
이런식으로 저장한 다음에 읽을때 다음과 같이 합니다.
1. fgetc 해서 /t인지 확인 -> /n일 경우 한줄이 끝났다고 알려준다. EOF도 확인 가능 2. 그리고 fscanf("%d",ptr) 해서, 숫자를 얻어낸다.일단, 한줄의 길이가 얼마가 될지 몰라서, strtok는 포기..입니다만. (스트링에 저장을 할수가 없으니...) 이용하는 방법이 있을까요? 으음.
댓글 달기