강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Lucas님의 프로필 이미지
Lucas

작성한 질문수

홍정모의 따라하며 배우는 C언어

4.10 scanf() 함수의 사용법

scanf() 정규 문자 질문 드립니다

작성

·

8

0

안녕하세요

scanf("%d,%d", &i1, &i2);

이번 수업으로 , 콤마를 통해 입력 값을 구분할 수 있다는걸 배웠는데요.

구분자를 빈칸 혹은 콤마 둘 중에 하나를 써도 입력이 될 수 있는 방법이 있는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. Lucas님.

입력을 받을 때, 특정 구분자를 허용하기 위해서는 여러 방법을 사용할 수 있습니다. 기본적으로 scanf 함수는 특정한 입력 형식을 요구하기 때문에 빈칸이나 콤마 둘 중 하나를 선택하여 입력하실 수 있도록 하려면 scanf 대신 다른 방법을 고려해보는 것이 좋습니다.

scanf 자체로는 원하는 결과를 바로 얻기 어려울 수 있어서, 일반적으로 fgets를 사용하여 입력을 받은 후, 이를 sscanf로 처리하면 더욱 유연한 입력 처리가 가능합니다. 예를 들어 사용자로부터 문자열로 입력을 받은 후 문자열을 파싱(parse)하여 숫자로 변환하는 방법입니다.

다른 대안으로 scanf("%d%*1[ ,]%d", &i1, &i2);를 시도해보실 수 있습니다. 이 형식 지정자는 두 번째 정수를 읽기 전, 공백이나 콤마가 오는 경우를 허용하도록 구성되어 있습니다. 그러나 이 방법은 특정 상황에서는 완벽하게 작동하지 않을 수 있어, 위의 fgetssscanf 방법을 더 추천드립니다.

관련된 개념으로는 문자열을 파싱할 때 자주 사용되는 함수나 기법을 더욱 익혀두시면 많은 도움이 될 것입니다.

유사한 질문들도 있습니다. 여기에서 다른 유사한 scanf 사용법도 다양한 답변을 얻을 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Lucas님의 프로필 이미지
Lucas

작성한 질문수

질문하기