fscanf 의 입력 필터링, 선택 기능
Posted 2007. 6. 11. 10:30, Filed under: Study/Computer Science[질문] fscanf(fd,"%*[^\n]"); 이게 무슨 뜻인지 좀 가르쳐 주세요~~^^;;
원문 링크
이런 것도 있었군~
메뉴 선택 같은 부분에서 지정된 값 이외에 쓸데없는 입력이 들어오는 것을 필터링할 때 사용하면 굉장히 유용할 듯..
원문 링크
Q.
코드 분석중에 fscanf(fd,"%*[^\n]");
이런 코드를 발견 했습니다..파일로 부터 읽는 것 같은데.. %*[^\n]
이것이 무엇을 의미하는지 모르겠습니다..
코드 분석중에 fscanf(fd,"%*[^\n]");
이런 코드를 발견 했습니다..파일로 부터 읽는 것 같은데.. %*[^\n]
이것이 무엇을 의미하는지 모르겠습니다..
아시는 분 부탁드립니다..^^;;;
A.
*는 입력을 읽기는 읽되 어떤 변수에 저장하지 않고 건너뛰는 것입니다.
예를 들어
에서 "1 2"를 입력하면 1은 건너뛰고 i의 값은 2가 됩니다.
에서 "123abc"를 입력하면 number는 "123"이 됩니다.
scanlist 안의 ^는 scanlist에 명시된 글자를 제외한 것만 입력하겠다는 뜻이고요.
그러니까 "%*[^\n]"은 end-of-line('\n')이 나오기 전까지 읽어서 버리겠다는 뜻입니다.
Submitted by doldori on 목, 2006/08/17 - 5:49pm.
---------------*는 입력을 읽기는 읽되 어떤 변수에 저장하지 않고 건너뛰는 것입니다.
예를 들어
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.
이런 것도 있었군~
메뉴 선택 같은 부분에서 지정된 값 이외에 쓸데없는 입력이 들어오는 것을 필터링할 때 사용하면 굉장히 유용할 듯..