인프런 커뮤니티 질문&답변

라임맛커피님의 프로필 이미지

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

교안 21쪽의 예제 질문 있습니다.

22.06.22 22:15 작성

·

113

0

 
 
안녕하세요 큰돌님
 
 
교안 21쪽에 scanf로 받기 에서 예제로 나온 문제에서
 
 
 
cin >> n >> m; 이부분에 대한 변수 선언이 없는것 같은데 예제가 맞는건가요?
 
 
 
#include<bits/stdc++.h>

using namespace std;

int a[10][10];

int main() {
	
	cin >> n >> m;
	for(int i=0; i<n; i++) {
		for(int j = 0; j < m; j++) {
			scanf("%1d", &a[i][j]);
		}
	}
	
	return 0;
}

 

그리고 밑에 eof 이용한 예제인

 

while (scanf("%d", &n) != EOF)

while (cin >> n)

 

이거랑

 

while(!cin.eof()) {

cin >> n;

}

 

이거랑 비슷한 방법인가요?

밑에 코드는 입력이 되는데 엔터 후에도 계속되더가 ctrl+z 누르면 종료가 되는데

 

교재에 나와 있는 코드는 그냥 엔터 누르면 멈춰 버리는 것 같아서 여쭤봅니다. 

 

 

 

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

2022. 06. 23. 12:42

안녕하세요. wnstn2844님. 

 

1. n, m은 변수를 추가해서 교안을 다시 올렸습니다. 변수가 추가가 안되어 있네요 ㄷㄷ

 

2. 음.. 그게 아니구요. 

 

scanf와 cin은 다르게 해야 합니다. 

 

while (scanf("%d", &n) != EOF) 

while (cin >> n) // cin으로는 이렇게 하면 됩니다

 

제가 cin에다가 eof를 기반으로 하라고 한 적도 없구요.

실행하기 좋게 예시를 들어 설명하자면 다음과 같습니다. 

1안) scanf로 할 때

#include <bits/stdc++.h>
using namespace std;
//1안
int n; 
int main(){
while (scanf("%d", &n) != EOF) {
cout << 1 << '\n';
}
}

2안) cin으로 할 때

#include <bits/stdc++.h>
using namespace std;

//2안
int n; 
int main(){
while (cin >> n) {
cout << 1 << '\n';
}
}

 

감사합니다. 

강사 큰돌 올림.