아마도 최대 길이의 문자열이 들어갔을때의 동작이 달라질 것 같습니다.
예를 쉽게 들기 위해서 10이 최대라고 하면, 지금 10의 크기 배열을 잡으신건데
abc efghij\n 의 입력이 들어오면
첫번째는 9개(n-1=10-1) 혹은 \n 이 들어올때까지 읽고 \0를 집어 넣어서
abc efghi\0
가 들어갑니다. 마지막 한글자만 못 읽었네요.
두번째는 10개를 모두 읽습니다.
abc efghij
대신 \n이나 \0가 없겠네요.
그 다음 loop 는 \0나 \n 까지 돌면서 워드를 세는데,
첫번째는 마지막 한글자가 없지만 워드 수는 동일하므로 정답이 나오고
두번째는 10을 넘어서 쓰레기 값을 가지고 돌겠죠. 언젠가 \0이나 \n을 만나겠지만 " "도 있을 것이므로 워드수는 달라지겠죠.
thankyouoov 6년 전
위 코드와 밑에 코드는 문자열 입력받는 부분만 다릅니다.
위에 코드는 cin.get을 for문을 이용해서 입력받고
아래코드는 cin.get(a, 1000000)함수를 이용해서 입력받습니다.
결과로는 위에 코드는 틀렸다고 뜨고 아래코드는 정답이라고 뜹니다.
차이가 무엇인지 너무 궁금합니다.