안녕하세요 두다스입니다.
이번에는 scanf() 함수 사용시 주의사항에 대해 알아보겠습니다.
1. scanf() 함수에 사용되는 번지 연산자(&).
scanf() 함수의 인수에는 반드시 다음과 같이 번지연산자(&)를 사용해야 합니다.
ex) int ch;
scanf("%d", &ch);
다만, Hello와 같은 연속된 문자를 입력하고 싶을 땐
ex) int ch[1000];
scanf("%s", ch);
위와 같이 해주시면 됩니다. 그 이유는 연속된 문자를 입력할 때는 변수선언 할 때 저장공간을 ch[1000]; 처럼
변수이름 옆에 [바이트수]를 써주기 때문에 scanf()함수 인자에 번지연산자(&)를 또 써줄 필요는 없습니다.
써줘도 별 문제는 없지만, 불필요하게 반복되는건 좀 그렇죠 .
2. scanf() 함수에 문자열 사용. // scanf()함수 내에 문자열을 사용할 경우엔 입력할때에도 문자열까지 같이 입력해야 정상적으로 입력값이 출력됩니다.
scanf() 함수는 서식문자와 공백문자(' ', '\t, '\n') 외에 다른문자를 사용할 수 없습니다.
ex) int ch;
scanf("값을 입력하세요: %d", &ch);
와 같이 사용하면 컴파일시에는 문제가 없지만, 실행시켜서 입력하면 이상한 값이 나오게 됩니다.
따라서, 저렇게 사용하지 말고 다음과 같이 사용해야 됩니다.
ex) int ch;
printf("값을 입력하세요: ");
scanf("%d", &ch);
3. scanf() 함수에서 콤마사용. // 2번과 마찬가지로 콤마도 입력할시에 똑같이 입력해주시면 정상적으로 입력값이 출력됩니다.
scanf() 함수에서 콤마는 사용 할 수 없습니다.
ex) int i, j;
scanf("%d, %d", &i, &j);
위와 같이 콤마를 사용했을경우엔 i는 정확한 값이 입력되지만, j는 값이 입력되지 않습니다.
그 이유는 2번과도 연관이 있는데 콤마 등 사용할 수 없는 문자를 만나면 scanf() 함수는 에러가 발생되고 리턴하기 때문입니다.
p.s. 이 글은 안랩 V스쿨 카페(http://cafe.naver.com/vgeneration)와 블로그(http://dudas.tistory.com)에만 게시합니다.
'Programming > C/C++' 카테고리의 다른 글
11번째, 논리연산자 (0) | 2010.07.11 |
---|---|
12번째, 증가·감소 연산자 (0) | 2010.07.11 |
7번째, gets() 함수. (0) | 2010.06.16 |
4번째, C언어의 데이터유형에 대해 알아봅시다. (0) | 2010.06.16 |
Turbo C++ 제 3탄, 입·출력 함수에 대해 알아봅시다. (0) | 2010.06.16 |