scanf("변환 명세", &변수명)

 

- &변수명

  • scanf에서는 입력된 값을 저장할 기억장소의 주소를 명시해야 하므로 변수명 앞에 반드시 &(ampersand)를 붙여야함.
  • 문자열의 경우에는 &를 붙이지 않는다. (문자열은 %s)

- 사용시 주의사항

1. 변환명세 안에 변환명세가 아닌 문자는 사용X.

  • 예: scanf("키를 입력하세요: %d", &height) (X);
  • 예: printf("키를 입력하세요: "); scanf("%d, &height");

2. 변환명세에서 큰 따옴표로 닫기 전에 공백문자 사용X.

  • scanf("%d  ", &height); (X)
  • scanf("%d\t", &height); (X)
  • scanf("%d\n", &height); (X)
  • 이 경우 정수 입력 후 엔터키를 눌러도 %d 뒤의 공백문자 때문에 공백 문자가 아닌 데이터를 추가로 입력하여야 scanf가 완료된다.
  • scanf("%d", &height); (O)

3. 변환명세에서 필드폭은 꼭 필요할 때만 사용한다.

  • 예: 만약 height = 1234
  • scanf("%3d", &height);
  • scanf("%d", &age);
  • 이러면 처음에는 123이 height가 저장되는데
  • 나머지 정수 4가 age에 저장됨. 

4. 자료형에 맞는 변환 지시자(d, lf, c, s 등)를 사용해야 한다.

 

 

%s를 사용한 문자열 입력

char name[10];

printf("이름은? ");
scanf("%s", name);
printf("입력한 이름: %s", name);

 

 

 

여러 개의 자료를 한꺼번에 입력하기

int n1, n2, n3, n4;

printf("곱셈을 하고 싶은 두 개의 정수는? ");
scanf("%d %d", &n1, &n2);
printf("\n덧셈을 하고 싶은 두 개의 정수는? ");
scanf("%d, %d", &n3, &n4);

이런 식으로 데이터 구분자를 해줘서 입력해줘야함.

 

'프로그래밍 > C,C++' 카테고리의 다른 글

C,C++ - 제어문(if)  (0) 2024.04.03
C,C++ - 다양한 연산  (0) 2024.04.03
C,C++ - 필드폭과 정밀도 지정  (0) 2024.04.02
C, C++ - 변수 생성  (0) 2024.04.01
C,C++ - 문자, 문자열 상수 표현 문법  (1) 2024.04.01

+ Recent posts