언어/C&C++ 응용

[C] 특수 입력

차가운오미자 2021. 8. 24. 11:21

연속된 숫자 받기

0000010010

0010010101

0011110100

 

이렇게 생긴 입력을 받을 땐, 단순히 이중 for 루프에 "%d"로 받을 수 없다.

 

이걸 하나하나 쪼개서 받고 싶으면

1. 포맷 이용

scanf("%1d", &a[i][j]); 이렇게 받던가

int M;
int ma[101][101];

scanf("%d", &M);
	for (int i = 0; i < M; i++) {
		for (int j = 0; j < M; j++) {
			scanf("%1d", &ma[i][j]);
		}
	}

 

아니면

2. string으로 받아야 한다. 

char arr[100][101];

for(int i = 0; i<n; i++){
	scanf("%s", &arr[i]); 
}

대신 이렇게 받으면 들어오는 0, 1들이 char 형으로 들어오기 때문에 '0', '1' 이런식으로 이용해야 한다. 

 

공백 포함해서 받기

1. scanf("%[^/s", s);

char s[50 + 10];
scanf("%[^/s", s);

2. gets

char s[50];
gets(s);

3. fgets

char *fgets(char *str, int n, FILE *stream)

  • str −  읽어들이는 문자열을 저장할 배열의 포인터
  • n − 마지막 null 문자를 포함해서 최대 몇 캐릭터를 읽을 것인지. 일반적으로 문자열이 저장될 배열의 크기를 준다. 
  • stream − 문자들을 읽어낼 스트림을 identify 하는 FILE 객체에 대한 포인터
char s[50];
fgets(s, 50, stdin);

 

'언어 > C&C++ 응용' 카테고리의 다른 글

[C] 정렬: qsort()  (0) 2021.09.07
[C++] std::sort()  (0) 2021.09.06
[C] Visual Studio 경고 레벨 높이기  (0) 2021.08.11
[C] Visual Studio 간단 디버깅  (0) 2021.08.05
[C] 난수 발생  (0) 2021.08.03