[C] 허프만 트리 코딩 문제
글쓴이: leedors527 / 작성시간: 수, 2017/11/08 - 8:27오후
제목 그대로 허프만 트리를 작성하는 과제를 수행하고 있습니다.
트리를 만들기 전 문자열의 각 알파벳의 개수를 알아야 하는데
제가 하는 과제의 경우 문자열을 직접 입력하는 게 아니라 파일에 저장된 텍스트를 받아서 이 텍스트 안에 있는 알파벳의 각각의 개수를 구해야 하더군요.
제가 알고 있는 C에서 지원하는 파일 입력 함수는 fgets, fscanf 등등인데 이게 텍스트의 첫줄만 받고 개행 밑으로는
안 받고 그대로 리턴해버리더라고요.
개행 문자는 인식을 안하고 그냥 전부 다 받아버리게 할 순 없을까요?
가령 텍스트 파일에
banana
apple
orange
이렇게 있으면
char text[] = "bananaappleorage";
이런 식으로 받게 하고 싶습니다.
Forums:
참고해보세요.
- 각 함수에 설명. 인자값. 리턴값. 오류값 등을 출력해서 확인해 봅니다.
- fopen() 으로 rt 는 텍스트'이고. rb 는 바이터리'로 읽기 일 겁니다.
- fread() 로도 읽으면 될것 같은데. ㅇ_ㅇ;; 확인해 봐야 합니다.
- 구글 번역이 있습니다.
https://translate.google.co.kr
fread (웹에서 컴파일 가능)
http://en.cppreference.com/w/c/io/fread
fread
https://msdn.microsoft.com/ko-kr/library/kt0etdcs.aspx
fread
http://www.cplusplus.com/reference/cstdio/fread/
fread
http://itguru.tistory.com/68
fread 파일로부터 지정한 개수만큼 자료 읽기
http://forum.falinux.com/zbxe/?mid=C_LIB&page=2&document_srl=408226&sort_index=readed_count&order_type=desc
C 언어 레퍼런스 - fgetc 함수
http://itguru.tistory.com/37
허프만 트리
https://www.google.co.kr/search?source=hp&ei=DBgDWumiOoXw0AT__rLACw&q=+%ED%97%88%ED%94%84%EB%A7%8C+%ED%8A%B8%EB%A6%AC&oq=+%ED%97%88%ED%94%84%EB%A7%8C+%ED%8A%B8%EB%A6%AC&gs_l=psy-ab.3..0l3j0i30k1l3j0i8i30k1.2384.2384.0.3136.1.1.0.0.0.0.131.131.0j1.1.0....0...1..64.psy-ab..0.1.130....0.frW8YzwBZTQ
fgets()
http://www.cplusplus.com/reference/cstdio/fgets/
fscanf()
http://www.cplusplus.com/reference/cstdio/fscanf/
fopen()
http://www.cplusplus.com/reference/cstdio/fopen/
fopen, _wfopen
https://msdn.microsoft.com/ko-kr/library/yeby3zcb.aspx
fopen
http://itguru.tistory.com/58
FOPEN
http://man7.org/linux/man-pages/man3/fopen.3.html
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
fgetc, isalpha 함수를 참고하셔서 구현하세요
fgetc라고 문자를 한 개만 입력받는 함수가 있습니다. 이 함수를 이용해서 문자 하나 입력받고 isalpha 함수로 알파뱃인지 체크한 다음 char 버퍼에 추가하는 식으로 구현하시면 될 것 같네요.
하나 더 첨언하면
알파뱃 각각을 카운팅 하는 문제라면 그냥 char 버퍼에 저장하지 않고 바로 카운팅 하셔도 되겠네요.
댓글 달기