scanf 관련 질문 드립니다.
1/
int num;
char str1[100];
scanf("%[^,],%d",str1,num);
이렇게 했을 때 %[^,]는 ,가 나오기 전까지 입력 받는 것으로 알고 있습니다.
그래서 human,3으로 입력 했을 때 str1에는 human이 num에는 3이 오류 없이 들어가는 걸 확인 했었습니다.
%[^,]와 %d 사이에 있는 ,는 정확하게 어떤 역할을 하는지 궁금합니다.
,가 입력되었을 때 ,를 무시하는 역할을 하는 것인지? 아니면 다른 무언가인지
그리고 human 3으로 입력 했을때 쓰래기 값이 나오는데 어디에서부터 나온 쓰래기 값인지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
%[^,]은 ,가 나오기 전까지 입력 받는 것으로 맞아요. %d는 정수형으로 입력 받는 것이구요. 그리고 %[^,],%d 사이의 ,는 scanf 함수가 입력 스트림에서 쉼표를 찾아서 무시하는 역할을 해요. 따라서 human,3을 입력했을 때 human이 str1에, 3이 num에 할당되는 것이 정상 동작입니다.
그리고 human 3으로 입력 했을 때 쓰래기 값이 나오는 것은, %[^,]에서 문자열을 입력 받을 때 스페이스나 엔터도 문자열에 포함되기 때문입니다. 따라서 양옆에 공백 문자가 있을 경우 입력받는 문자열에 포함됩니다. 이 경우 먼저 %[^,\n]으로 입력 받으면 더 나은 결과를 얻을 수 있습니다.
더 궁금하신 점 있으면 언제든지 댓글로 질문해주세요.
띄어쓰기
0
12
1
공부 순서
0
11
1
재귀함수 연산법
0
26
2
리눅스로 진행해도 될까요?
0
28
2
26년 1회차 기출 강의
0
60
2
기출문제
0
59
1
정보처리기사 실기 zip
0
45
2
데이터베이스 노션
0
39
2
수업노선자료파일 다운
0
35
2
C언어에서
0
62
1
포인터 질문
0
57
2
sizeof는 컴파일 타임 연산자라서 CPU를 사용치 않는다
0
31
2
실기 공부 시작 하려고 하는데요
0
102
2
20년 4,5회 13번
0
47
2
안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.
0
33
1
Export template 안됨
1
65
2
scanf("%d\n") 의미
0
51
2
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
95
2
26년 1회 실기 해설 강의
0
114
2
주소 연산자(&) 간접 지정자(*) 반대 개념
0
65
2
53번 4-1 자료 오류 있는 것 같습니다.
0
106
2
7번문제
0
88
2
C언어 변형문제 9번문제 Pdf 수정요청
0
79
2
메서드 오버드라드
0
71
2





