티스토리 뷰

1.    char s[101];

    while(scanf("%10s",s)){

        printf("%s\n",s);

    }


/////////////////////////////////////


    char s[101];

    while(scanf("%10s",s)==1){

        printf("%s\n",s);

    }


위와 아래의 차이점 

-우선 scanf 는 eof를 만나면 -1을 리턴한다

-이외에는 입력받은 개수만큼 값을 리턴한다

-파일입출력 채점시 위의 코드는 파일의 끝을 만나도 -1이 리턴되기 때문에 계속해서 무한루프에 빠진다

-아래의 코드는 eof를 만나면 -1이 리턴되기때문에 프로그램이 종료된다

-이러한 섬세한 차이를 알아야 알고리즘 문제 풀 때 사소한 걸로 틀리지 않게 된다.....................;;




2.scanf에서


 

"%[^\n]\n"



"%[^\n]"


의 차이점도 정말 궁금합니다..

우선 [ ] 안에는 \n 을 만날때까지 입력을 받는다는 것은 알겠는데 [ ] 뒤에 붙은 \n 의 의미는 무엇인가요..


[답변]

입력 버퍼에 남아 있는 줄바꿈 문자를 제거한다는 의미죠

`a b c\nd e f`에서 `%[^\n]`으로 입력받으면 `a b c`가 입력되고 버퍼에 `\nd e f`가 남고, 여기서 `\n`을 제거해 주지 않으면 다음 문자열을 입력받을 수 없어요

'알고리즘' 카테고리의 다른 글

1158 조세퍼스 문제  (0) 2017.07.31
1254 팰린드롬 만들기  (0) 2017.02.15
1010번 다리 놓기  (0) 2017.02.15
10828번 스택  (0) 2017.01.14
소수 구하기 - 에라토스테네스의 체  (0) 2017.01.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함