scanf 정리

2019. 7. 30. 23:57PL/C++

1. %i

10, 8, 16진수를 모두 처리할 수 있다

앞에 0을 붙이고 숫자를 입력하면 8진수

앞에 0x를 붙이고 숫자를 입력하면 16진수로 입력이 된다

 

#include <stdio.h>

int main(void) {
	int x;
	scanf("%i", &x);
	printf("%d\n", x);

	return 0;
}

 

2. \n과 공백

scanf 안에 \n과 공백을 입력하면, 모든 줄바꿈과 공백을 다음 입력이 들어올 때까지 "\n과 공백"이 처리하게 된다.

 

3
A B C
D E F
G H I

 

다음 입력을 받고 아스키코드 값으로 출력하는 코드를 작성한다면, 위를 이용해 2가지 방식으로 구현할 수 있다. 두번째 같은 경우는 마지막에 문자 하나를 더 작성해야만 프로그램이 종료된다

 

단, freopen으로 읽을 때는 EOF까지 읽기 때문에 상관이 없다

 

#include <stdio.h>

int main(void) {
	int n;
	scanf("%d", &n);
	while (n--) {
		char x, y, z;
		scanf(" %c %c %c", &x, &y, &z);
		printf("%d %d %d\n", x, y, z);
	}
	return 0;
}

 

#include <stdio.h>

int main(void) {
	int n;
	scanf("%d\n", &n);
	while (n--) {
		char x, y, z;
		scanf("%c %c %c\n", &x, &y, &z);
		printf("%d %d %d\n", x, y, z);
	}
	return 0;
}

 

3. %[]

%[] : [] 안에 있는 입력만 받게 된다

%[^] : [] 안에 있는 입력을 제외하고 받게 된다

 

 

'PL > C++' 카테고리의 다른 글

fgets, scanf로 대체하기  (0) 2019.08.01
string::compare  (0) 2019.08.01
strtok  (0) 2019.07.27
strstr  (0) 2019.07.27
fgets와 fputs  (0) 2019.07.26