https://www.hackerrank.com/challenges/playing-with-characters/problem
이 문제를 기반으로 설명한다.
C언어는 흔히 입력을 받을 때, scanf(..., ....) 문장을 쓴다.
그렇지만 이제 한 문자가아닌 더 길어진 문자열, 문장을 받을 때는 다른 방법을 써야 한다.
답부터 말하자면 이렇게 된다.
물론 다른 방법이 많이 있다.
다 scanf()를 이용해서 받았다. 어떻게 활용하는지 알아보자
출력으로 확인할 때 배경지식
-
문자를 입력받는 방법
1. char 문자 선언
2. scanf("%c", &"해당문자");
3. 출력해서 확인.
++여기서 %s로 해도 결과는 같다.
-
2. 문자열을 입력받는 방법
1. 문자열이므로 배열로 선언
2. scanf("%[^\n]%*c", s);
3. 출력해서 확인
++scanf("%[^\n]%*c", s);을 보면 무슨 뜻인지 모를 수 있는데 [ ] 라는 것이 the scanset character 라고 한다.
다시 말하면 [^\n]의 뜻은 \n, newline이 나올 때까지 입력받겠다는 뜻이다. (그 newline을 입력받지는 않는다)
++ ^가 없다면 [\n]은 newline만 읽겠다는 것이다. \n가 아닌 다른 문자가 나오면 입력을 멈춘다.
-
3. 문장을 입력받는 방법
1. 문자열이므로 배열로 선언
2. scanf("%[^\n]%*c", sen);
3. 출력해서 확인
++%*c는 뭘까???
* 문자는 stdin 에서 입력은 받지만 그 데이터는 버려버리는 특징이 있다고 하는데..?
*에 대해서는 정확히 모른다.. 그래서
여기서 가져왔다. 잘 파악해보자.
++ scanf()의 특성을 알기 어렵고 쓰기 귀찮아서
입력받을 때 fgets를 쓰고는 한다.
끝
'문제풀이(Problem Solving) > C++ 문제풀이에 유용한 것들' 카테고리의 다른 글
2의 보수, 2's complement [C] (0) | 2021.03.24 |
---|---|
[C언어] 기본 함수, 메서드 만들기 (0) | 2020.07.02 |
[C++] 기본 입력과 출력 (0) | 2020.07.01 |
[C언어] 숫자 입력, 출력하기 (0) | 2020.07.01 |
[C언어] 일반변수와 포인터변수의 차이 간단하게 알아보기 (0) | 2020.02.02 |