연속된 숫자 받기
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 |