2011-06-10 3 views
0

IDL의 file_lines() 기능에 문제가 있습니다. 내가 이맥스 버퍼 내에서 확인하고 명령어 grep -c "."을 사용하여 27000 라인의 ASCII 데이터 파일을 가지고있다. 그러나 file_lines()은 81807 개의 값을 리턴합니다. 이 기능은file_lines() 함수에 문제가 있습니까?

FUNCTION file_lines, filename 
    OPENR, unit, filename, /GET_LUN 
    str = '' 
    count = 0ll 
    WHILE ~ EOF(unit) DO BEGIN 
     READF, unit, str 
     count = count + 1 
    ENDWHILE 
    FREE_LUN, unit 
    RETURN, count 
END 

나의 첫번째 본능 내 오히려 긴 줄 (최대 231 개 문자) 할 절단 된 것이 었습니다 코드 (http://idlastro.gsfc.nasa.gov/idl_html_help/FILE_LINES.html)에 해당 IDL 문자열 변수의 문자 수 제한이 있지만 IDL 문자열은 길이가 2147483647 (2.1GB) 인 문자를 가질 수 있기 때문에이 경우에는 적합하지 않습니다 (http://idlastro.gsfc.nasa.gov /idl_html_help/Overview_of_Strings.html)

무엇이 잘못 되었나요?

답변

0

필자의 코드는 내 리눅스 시스템에서 선 길이와 상관없이 27000 행 입력 파일에 대해 예상대로 작동합니다. 아마도 파일에 ASCII 코드가 아닌 코드가 있습니다. 작은 이진 파일에서 file_lines 함수를 실행하면 /bin/bash이라고 말하면 grep -c "." /bin/bash 또는 wc -l /bin/bash과 다른 대답을 얻을 수 있습니다.