저는 초보자이며 온라인 강의에서 다음 코드를 이해하려고합니다. 문자열을 스캔하여 정수를 찾습니다. 문자가 발생하면 sscanf가 실패합니다.sscanf 비헤이비어/리턴 값
int n; char c;
if (sscanf(string, " %d %c", &n, &c) == 1)
//return the integer
else
// fail
나는 sscanf를위한 매뉴얼 페이지를 읽고 여전히 반환 값을 확인하고 왜이 코드가 작동에 대한 혼란 스러워요했습니다. 그들은 "이 함수는 할당 된 입력 항목의 수를 반환합니다"라고 설명합니다.
sscanf가 문자 만 만날 경우 &c ...에 기록하지만이 경우 & n에 기록되지 않습니다. 이 경우 sscanf의 반환 값은 여전히 1이라고 생각했을 것입니다.
'sscanf'는 '% d'을 (를) 건너 뛰지 않고 '% c'을 (를) 먹습니다. 숫자가 처음으로 나오지 않으면 0을 반환합니다. –
어떤 이유로 sscanf가 너무 엄격하게 (형식 문자열 당) 순전히 나를 피할 수있었습니다. 감사! – drjimmie1976