- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[C] scanf()함수 예제1 본문
%s형식지정자의 역할을 보기위해 다음 프로그램을 실행시켜 본다. 질의가 나오면, this is a test라고 타이핑하고 엔터키를 입력한다. 단지 this만이 화면에 다시 나타나는 것을 보게된다. 이것은 scanf()가 문자열을 읽을 때 공백, 탭, 혹은 뉴라인 문자를 만나면 읽는 것을 멈추기 때문이다.
#include <stdio.h>
int main(void) {
char str[80];printf("enter a string: ");
scanf("%s", str);
printf(str);printf("\n");
return 0;
}
다음은 대문자와 소문자 모두를 받아들이는 스캔셋의 예이다. 영문자 몇개를 입력한 다음, 다른 하나의 문자, 그리고 몇개의 영문자를 입력한다. 엔터키를 치면, 영문자가 아닌 문자 앞에 입력된 영문자들만이 str에 저장된다는 것을 알 수 있을 것이다.
#include <stdio.h>
int main(void) {
char str[80];printf("enter letters, anything else to stop\n");
scanf("%[a-zA-Z]", str);printf(str);
printf("\n");
return 0;
}
scanf()를 사용하여 공백문자를 포함하는 문자열을 읽으려면, 스캔셋을 이용할 수 있다. 다음 프로그램은 스캔셋을 이용하도록 이전의 프로그램을 약간 변경한 것이다.
#include <stdio.h>
int main(void) {
char str[80];printf("enter letters and spaces\n");
scanf("%[a-z A-Z]", str);
printf(str);printf("\n");
return 0;
}
다음 프로그램에서 사용자는 하나의 수, 연산자, 두번째 수를 순서대로 입력할 수 있다.(예:12+4) 그러면 이 프로그램은 두 수에 대하여 주어진 연산을 수행하며 결과를 출력한다.
#include <stdio.h>
int main(void) {
int i, j;
char op;printf("enter operation: ");
scanf("%d%c%d", &i, &op, &j);switch(op) {
case '+': printf("%d", i+j);
break;
case '-': printf("%d", i-j);
break;
case '/': printf("%d", i/j);
break;
case '*': printf("%d", i*j);
}printf("\n");
return 0;
}
scanf("%d %c%d", &i, &op, &j);
제어문자열에 공백이 있을 때마다, scanf()는 공백, 탭, 혹은 뉴라인이 아닌 문자를 만날 때까지 공백, 탭, 혹은 뉴라인문자들을 무시할 것이다. 이것은 공백, 탭, 혹은 뉴라인 문자가 없을 때도 포함한다. 이와같이 변경하면, 프로그램에 정보를 입력할 때, 첫번째 수와 연산자 사이에 한 개 이사의 공백을 둘 수 있다.
다음 프로그램은 최대 필드너비를 지정자와 함께 사용한다.
#include <stdio.h>
int main(void) {
int i, j;printf("enter an integer: ");
scanf("%3d%d", &i, &j);
printf("%d %d", i, j);printf("\n");
return 0;
}
다음 프로그램은 공백, 탭, 혹은 뉴라인이 아닌 문자들을 제어문자열에 두는 효과를 보여준다. 이것은 10진수 값을 입력하는 것을 허용하나, 소숫점 왼쪽에 있는 숫자들을 하나의 정수형 변수에, 소숫점 오른쪽에 있는 숫자들을 다른 정수형 변수에 저장한다. 두 개의 %d지정자들 사이에 있는 소숫점이 입력된 수의 소숫점과 대응되며, 입력된 소숫점은 무시된다.
#include <stdio.h>
int main(void) {
int i, j;printf("enter a decimal number: ");
scanf("%d.%d", &i, &j);
printf("left part: %d, right part: %d", i, j);printf("\n");
return 0;
}
'★─Programing > ☆─C | C++' 카테고리의 다른 글
[C] C 표준 함수 memset (1) | 2008.03.18 |
---|---|
[C] 다항식 덧셈 / C로 구현 (연결 리스트) (0) | 2007.11.27 |
[C] strtok구현 (0) | 2007.11.07 |
[C] 2차원 배열 생성 malloc (0) | 2007.10.30 |
[C] 포인터, 배열, 구조체 (0) | 2007.10.29 |