standard io로 파일을 읽었습니다. CR과 LF가 LF하나로 안바뀌고 CR이 그대로 남아 있습니다. 읽은 파일은 euc-kr 로 작성된 텍스트파일입니다. gdb에서 읽은 라인을 출력해보니 개행문자가 \n 가 아니고 \r\n입니다. 원래 \r\n은 stdio에서 \n로 변환되는데요. 왜 이럴까요? 해결법을 좀 알려주세요.
파일은 DOS/Win 형식으로 작성된 것인데 프로그램은 UNIX 환경에서 실행한 듯 합니다. 꽁수이기는 하지만 이런 식으로 하면 될 것입니다.
char line[100]; FILE* fp = fopen("myfile", "r"); while (fgets(line, 100, fp)) { size_t len = strlen(line); if (len >= 2 && line[len-1] == '\n' && line[len-2] == '\r') { line[len-2] = '\n'; line[len-1] = '\0'; } }
원래 \r\n은 stdio에서 \n로 변환되는데요.
친절한 답변 감사드립니다. 윈도우텍스트파일을 ftp에서 ascii모드로 리눅스로 전송하니 0D 0A가 0A로 자동으로 변환되는군요. 간단히 해결됐네요.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: 파일스트림 읽는데 CR문자가 같이 포함되는경우
파일은 DOS/Win 형식으로 작성된 것인데 프로그램은 UNIX 환경에서 실행한 듯
합니다. 꽁수이기는 하지만 이런 식으로 하면 될 것입니다.
DOS/Win 환경에서 텍스트 모드로 읽을 때만 그렇습니다. 관련된 얘기는
http://groups.google.co.kr/group/han.comp.lang.c/browse_thread/thread/4e2d8b9a352266f5
을 참고하십시오.
Re: 파일스트림 읽는데 CR문자가 같이 포함되는경우
친절한 답변 감사드립니다.
윈도우텍스트파일을 ftp에서 ascii모드로
리눅스로 전송하니 0D 0A가
0A로 자동으로 변환되는군요. 간단히 해결됐네요.
댓글 달기