본문 바로가기

카테고리 없음

[c언어]백준 11718번 그대로 출력하기

728x90

[c언어]백준 11718번 그대로 출력하기

코딩 공부를 꾸준히 하던중 이제부터라도
알고리즘 문제를 풀었을때 성장했다, 지식이 쌓였다,
라는 문제는 블로그에 적기로 결심했다.

문제


입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다.
각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.

출력


입력받은 그대로 출력한다.

예제 입력 1

Hello 
Baekjoon 
Online Judge



예제 출력 1

Hello 
Baekjoon 
Online Judge


[소스 코드]

#include<stdio.h>

int main()
{
    char arr[101];
   
    while(scanf("%[^\n]s",&arr)!=EOF){
    printf("%s\n",arr);  
    
    getchar();}   
   
   return 0;
}


문제의 포인트는 보통 scanf로 입력받고
그대로 출력하게되면 공백 전의 문자열만 출력이 되는데
공백도 같이 출력하게 하는게 포인트였다.

scanf("%s",&arr);
로 Hello World!입력을 하게되면

Hello 만 출력되서 한참을 고민하던중

%s 사이에 [^₩n] 을 넣게되면 공백도 출력이 된다는 것을
찾았다. 생전 처음보는 생김새라 뭐지? 싶었지만
[^₩n] 문자를 넣게되면 enter를 누르기전 까지의 모든 문자열을 출력해준다는 사실을 알았다.
나중에 언젠가 많이 사용하지 않을까 싶다.

그리고 요즘 대부분의 컴파일러에서 getchar() 함수
사용을 거부한다는 것도 알게되었다.
getchar_s 를 사용하도록 하자.