scanf 형식 지정자의 별표는 무엇을 의미합니까?
그래서 우연히 이 코드를 발견했는데 그 코드의 목적이 무엇인지, 어떻게 작동하는지 알 수 없었습니다.
int word_count;
scanf("%d%*c", &word_count);
제가 처음 생각한 것은%*d
A를 참조하고 있었습니다.char
포인터 또는 허용 안 함word_count
복용으로 인하여char
변수들.
누가 이것에 대해 좀 설명해 주실 수 있습니까?
*c
예를 들어 입력 "30a"의 경우 문자가 읽히지만 할당되지 않음을 의미합니다.word_count
, 하지만 'a'는 무시됩니다.
그*
인에"%*c"
의 약자assignment-suppressing character *
: 이 옵션이 있으면 함수는 변환 결과를 수신 인수에 할당하지 않습니다.1따라서 문자는 읽히지만 어떤 변수에도 할당되지 않습니다.
각주:
1. fscanf
인용하자면C11
표준, 챕터 §7.21.6.2, fscanf
[...] 각 변환 사양은 문자에 의해 소개됩니다.
%
. % 다음에는 다음과 같은 순서로 나타납니다.— 선택적 과제 억제 문자
*
.
— [...]
— 변환 지정자 문자
행동에 관해서는
[..] 할당 억제가 A에 의해 지시되지 않는 한
*
, 변환 결과는 변환 결과를 아직 수신하지 않은 형식 인수 뒤에 첫 번째 인수가 가리키는 개체에 배치됩니다. [...]
즉, 다음과 같은 형식 지정자의 경우에는"%*c"
,achar
로부터 읽힐 것입니다.stdin
스캔된 값은 저장되거나 어떤 것에도 할당되지 않습니다.따라서 해당 파라미터를 제공할 필요가 없습니다.
그럼, 이 경우엔
scanf("%d%*c", &word_count);
완벽하게 유효한 진술입니다.
예를 들어 *nix 환경에서는 입력 버퍼를 삭제합니다.newline
입력 후 키 누름으로 인해 저장됩니다.
언급URL : https://stackoverflow.com/questions/34874347/what-does-an-asterisk-in-a-scanf-format-specifier-mean
'programing' 카테고리의 다른 글
디브 안에서 수직으로 중심을 잡는 방법은? (0) | 2023.10.24 |
---|---|
HTML이 아닌 요청에 대한 응답으로 컨텐츠 보안 정책을 설정한다는 것은 무엇을 의미합니까? (0) | 2023.10.24 |
sql에서 일 년에 몇 개월 동안 각 달에 대한 합계 얻기 (0) | 2023.10.24 |
하나의 SQL 문을 사용하여 MySQL 데이터베이스의 모든 트리거를 삭제하려면 어떻게 해야 합니까? (0) | 2023.10.24 |
C-store에서의 조합에 대한 질문 - 하나의 유형으로, 다른 유형으로 읽음 - 구현이 정의되어 있습니까? (0) | 2023.10.24 |