외규장각 도서 환수 모금 캠페인

fscanf 의 입력 필터링, 선택 기능

Posted 2007. 6. 11. 10:30, Filed under: Study/Computer Science
[질문] fscanf(fd,"%*[^\n]"); 이게 무슨 뜻인지 좀 가르쳐 주세요~~^^;;
원문 링크

Q.  
코드 분석중에 fscanf(fd,"%*[^\n]");

이런 코드를 발견 했습니다..파일로 부터 읽는 것 같은데.. %*[^\n]
이것이 무엇을 의미하는지 모르겠습니다..

아시는 분 부탁드립니다..^^;;;


A. 
*는 입력을 읽기는 읽되 어떤 변수에 저장하지 않고 건너뛰는 것입니다.

예를 들어

int i;
scanf("%*d%d", &i);

에서 "1 2"를 입력하면 1은 건너뛰고 i의 값은 2가 됩니다.

그리고 []로 묶인 포맷 지정자를 scanlist라고 부릅니다. 문자열을 입력랄 때
scanlist에 명시된 글자만을 입력으로 받겠다는 뜻
입니다.

예를 들어


char number[10];
scanf("%[0123456789]", number);

에서 "123abc"를 입력하면 number는 "123"이 됩니다.
scanlist 안의 ^는 scanlist에 명시된 글자를 제외한 것만 입력하겠다는 뜻이고요.
그러니까 "%*[^\n]"은 end-of-line('\n')이 나오기 전까지 읽어서 버리겠다는 뜻입니다.

Submitted by doldori on 목, 2006/08/17 - 5:49pm.
---------------
이런 것도 있었군~
메뉴 선택 같은 부분에서 지정된 값 이외에 쓸데없는 입력이 들어오는 것을 필터링할 때 사용하면 굉장히 유용할 듯..
Response : ,


Recent Posts

Recent Comments

Recent Trackbacks

Total hit (Today , Yesterday )

Admin Write Post