yon11b

[백준] 11718번- 그대로 출력하기 본문

언어/C

[백준] 11718번- 그대로 출력하기

yon11b 2022. 12. 25. 01:25
반응형

 

 

최대 100번까지 입력할 수 있고, 띄어쓰기는 하나로 인식해서 출력해야 하는 문제이다.

줄바꿈 전까지 계속 입력을 받는 scanf("%[^\n]s",S); 를 사용해서 코드를 작성했다.

#include <stdio.h>
#include <string.h>
int main(){
    char S[100];
    int flag=0;
    while (flag<100){
        scanf("%[^\n]s",S);
        printf("%s\n",S);
        flag++;
    }
    return 0;
}

근데 틀렸다고 하는 것이다;;; 

 

알고보니 백준 채점 시스템에서 입력을 줄 때 파일을 읽어오는 형태로 되어 있어서 실행의 끝을 내 코드처럼 flag가 100이 될 때 종료하는 것이 아닐, 파일의 끝에 도달했을 때, 더 이상 입력 받을 것이 없다고 판단하고 종료시켜야 하는 것이었다.

그래서 파일의 끝을 의미하는 EOF를 사용해서 다시 코드를 작성했다.

#include <stdio.h>

int main(){
    char S[110];
    char eof;
    
    int flag=0;
    while (flag<100){
        scanf("%[^\n]s",S);
        eof=getchar();
        if (eof==EOF)    break;
        printf("%s\n",S);
        flag++;
    }
    
    return 0;
}

성공!

728x90