파일을 라인 단위로 읽어들이는 함수들은 있어도 세어 주는 건 본 적 없는 것 같네요.
라인 단위로 읽는 것도 한계가 있는데, 한 줄이 버퍼보다 더 큰 경우에는 어떻게 처리해야 할 지 생각이 필요할 겁니다.
getline() 같은 애들도 괜찮긴 한데, 단순히 라인 수 세자고 alloc/free 반복하는 건 배보다 배꼽이 더 크죠.
그냥 버퍼 단위로 읽어들인 다음에, '\n' 의 개수를 세는 게 좀 더 편할 겁니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
제약 사항을 정확히 알고 있고, 그 안에서 정확하게 통제되고 있는 상황이라면 그렇게 하셔도 무방합니다.
그런데 범용적으로 사용되고, 어떤 입력이 들어올지 알 수 없는 상황이라면, 사용하기 힘든 방법이 되겠죠.
라인이 버퍼보다 길면 fgets() 로 읽어들인 버퍼안에 '\n' 이 없을 테니, 결국 '\n' 이 있나 없나 검사해야 하는 건 같습니다.
위에 익명님이 소스 올려주신 것 처럼, 이미 알려진 명령어들의 소스를 보고 그 방식을 참고하는 것도 좋은 방법입니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
없지 않나요? 저도 궁금합니다.
없지 않나요? 저도 궁금합니다.
음 ..
파일을 라인 단위로 읽어들이는 함수들은 있어도 세어 주는 건 본 적 없는 것 같네요.
라인 단위로 읽는 것도 한계가 있는데, 한 줄이 버퍼보다 더 큰 경우에는 어떻게 처리해야 할 지 생각이 필요할 겁니다.
getline() 같은 애들도 괜찮긴 한데, 단순히 라인 수 세자고 alloc/free 반복하는 건 배보다 배꼽이 더 크죠.
그냥 버퍼 단위로 읽어들인 다음에, '\n' 의 개수를 세는 게 좀 더 편할 겁니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
답변 감사합니다
다행히 문서 파일이 한 줄에 80자를 넘는 경우는 없어서 괜찮긴 한데
while문에서 fgets로 세는 건 어떤가요?
https://github.com/coreutils
https://github.com/coreutils/coreutils/blob/master/src/wc.c
여기 wc 소스 315라인 부터 참고하세요
답변 감사합니다
최고의 레퍼런스 코드네요.
감사합니다.
음 ..
제약 사항을 정확히 알고 있고, 그 안에서 정확하게 통제되고 있는 상황이라면 그렇게 하셔도 무방합니다.
그런데 범용적으로 사용되고, 어떤 입력이 들어올지 알 수 없는 상황이라면, 사용하기 힘든 방법이 되겠죠.
라인이 버퍼보다 길면 fgets() 로 읽어들인 버퍼안에 '\n' 이 없을 테니, 결국 '\n' 이 있나 없나 검사해야 하는 건 같습니다.
위에 익명님이 소스 올려주신 것 처럼, 이미 알려진 명령어들의 소스를 보고 그 방식을 참고하는 것도 좋은 방법입니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
chatgpt와 Bard에 짜 달라고 하시고 비교해
chatgpt와 Bard에 짜 달라고 하시고 비교해 보세요.
재미있는 답변이군요.
재미있는 답변이군요.
비교는 사람이 하나요?
비교하라고 chatGPT에게도 시키고, Bard에게도 시키고.
멋진 작품이 나올 듯 하네요. :)
세벌 https://sebuls.blogspot.kr/
댓글 달기