문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들

[C언어] 문자, 문자열, 문장 입력으로 받기, Playing With Characters

게임이 더 좋아 2020. 6. 30. 15:26
반응형
728x170

https://www.hackerrank.com/challenges/playing-with-characters/problem

 

Playing With Characters | HackerRank

input character, string and a sentence

www.hackerrank.com

 

이 문제를 기반으로 설명한다.

 

 

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 에서 입력은 받지만 그 데이터는 버려버리는 특징이 있다고 하는데..?

 

*에 대해서는 정확히 모른다.. 그래서

https://modoocode.com/

 

여기서 가져왔다. 잘 파악해보자.

 

 

 

++ scanf()의 특성을 알기 어렵고 쓰기 귀찮아서

 

입력받을 때 fgets를 쓰고는 한다. 

 

 

 

 

 

 

 

반응형
그리드형