순차적으로 입력하면, 앞의 변수에는 값이 저장되지만, 뒤의 변수에는 쓰레기 값이 저장된다.
1
2
3
10, 20
--------------------
10, 20
콤마를 사용할 경우에는, 입력 문자열에서도 콤마로 구분을 해 주어야 한다.
문자형과 문자열
1
2
3
4
5
6
7
8
voidscanf_char_string(){chara;charb[100];// 100개의 문자를 저장할 수 있는 배열. 문자열scanf("%c",&a);scanf("%s",b);// 문자열은 &를 쓰지 않는다. (문자열 자체가 주소를 가리킴)printf("--------------------\n");printf("%c %s\n",a,b);}
문자형을 입력받을 때에는 &a 와 같이 주소 연산자를 사용한다.
반면, 문자열을 입력받을 때에는 주소연산자를 쓰지 않는다.
1
2
3
4
5
# 문자열 중간에 공백이 포함된 경우
S
Grade Card
--------------------
S Grade
입력 문자열 중간에 공백이 포함된 경우, 공백의 앞쪽 문자열만이 정상적으로 저장된다.
1
2
3
4
5
# 문자열 가장 앞에 공백이 있는 경우
S
Grade Card
--------------------
S Grade
입력 문자열 가장 앞에 공백이 있다면, 그 다음 문자열이 저장된다.
1
2
3
4
5
# 널 문자열 입력
S
Grade\0Card
--------------------
S Grade\0Card
널 문자열은 문자열 그대로 입력된다.
Reference
C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)
댓글 남기기