CR 이 없을수도 있다는 가정을 해 보시고..
실제로 읽어들이는 파일을 hex dump 해 봐서 CR 값을 수동으로
찾아봐야겠죠.
참고적으로...
읽어들이는 파일이 Text 파일일때에는 CR 이 있을수도 있고 없을수도 있습니다.
무슨 의미냐 하면,
Windows 환경에서 만들어진 Text 파일이라면 CR 이 존재하겠지만,
Unix/Linux 환경에서 만들어진 Text 파일이라면 CR 이 없을것입니다.
왜냐하면,
Windows 환경에서 NewLine 문자는 <CR><LF> 의 2Byte 로 이루어지며,
Unix/Linux 환경에서의 NewLine 문자는 <LF> 한 문자로 이루어집니다.
Windos or Dos 환경에서는 newline(/n) = CR + LF 같은 것이 됩니다.
그러니 getc()로 enter 입력을 받으면 newline을 받은 것과 같은 역활을 합니다.
그리고 getc()로는 이러한 것을 잡아 낼 수가 없구요.
그냥 '/n' 이 입력되면은 그 놈이 있는것과 같습니다.
참고 하시길...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
Windos or Dos 환경에서는 newline(/n) = CR + LF 같은 것이 됩니다.
그러니 getc()로 enter 입력을 받으면 newline을 받은 것과 같은 역활을 합니다.
그리고 getc()로는 이러한 것을 잡아 낼 수가 없구요.
그냥 '/n' 이 입력되면은 그 놈이 있는것과 같습니다.
참고 하시길..
맞습니다. 보다 자세한 이야기는 다음을 참고하시기 바랍니다 - 제가 다양
한 환경에서의 예도 인용해 두었습니다.
RE:
getc() 에서 읽어 들이는 값에 Carriage Return 이 없을수도 있죠.
CR 이 없을수도 있다는 가정을 해 보시고..
실제로 읽어들이는 파일을 hex dump 해 봐서 CR 값을 수동으로
찾아봐야겠죠.
참고적으로...
읽어들이는 파일이 Text 파일일때에는 CR 이 있을수도 있고 없을수도 있습니다.
무슨 의미냐 하면,
Windows 환경에서 만들어진 Text 파일이라면 CR 이 존재하겠지만,
Unix/Linux 환경에서 만들어진 Text 파일이라면 CR 이 없을것입니다.
왜냐하면,
Windows 환경에서 NewLine 문자는 <CR><LF> 의 2Byte 로 이루어지며,
Unix/Linux 환경에서의 NewLine 문자는 <LF> 한 문자로 이루어집니다.
Visual C++ 상에서는 getc()로 못 찾네요
님 말씀대로 Text파일을 읽는 중이었는데
Window상이라 <CR><LF>모두 존재합니다.
0D 0A값으로 말이죠~(Hex값으로 존재하고 있습니다)
Visual C++을 사용하고 있는데요
getc()로는 찾을 수가 없네요(제가 해본 실험에 의하면..)
야.. 이거 빨리 해결해야 되는디.. ㅎ :shock:
아~ 한가지 팁은요,
Visual C++에서만 이렇게 되는 지는 모르겠는데,
putc('/n',파일 스트림);//이렇게 하면 <CR><LF>값이 모두 들어간답니다. 요상하네요^^
Windos or Dos 환경에서는 newline(/n) = CR + L
Windos or Dos 환경에서는 newline(/n) = CR + LF 같은 것이 됩니다.
그러니 getc()로 enter 입력을 받으면 newline을 받은 것과 같은 역활을 합니다.
그리고 getc()로는 이러한 것을 잡아 낼 수가 없구요.
그냥 '/n' 이 입력되면은 그 놈이 있는것과 같습니다.
참고 하시길...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
\r 과 \n 둘다 판단하시는게 맞을듯 합니다.파일상에서 개행문자
\r 과 \n 둘다 판단하시는게 맞을듯 합니다.
파일상에서 개행문자를 보면 \n 이 맞을겁니다.
하지만 키보드로 입력 받을때는 \r 이 맞을겁니다.
하지만 윈도우에서는 \n -> \r\n으로 확장이 되죠.
차라리 \r 과 \n 을 둘다 판단하여 이러한 차이를 극복해보심이 좋을듯 합니다.
[quote="서지훈"]Windos or Dos 환경에서는 newline
맞습니다. 보다 자세한 이야기는 다음을 참고하시기 바랍니다 - 제가 다양
한 환경에서의 예도 인용해 두었습니다.
http://groups.google.com/groups?threadm=ba78f4%243f6%241%40news.hananet.net&rnum=5&prev=/groups%3Fq%3DMac%2Bgroup:han.comp.lang.c%26hl%3Dko%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26group%3Dhan.comp.lang.c%26selm%3Dba78f4%25243f6%25241%2540news.hananet.net%26rnum%3D5
--
Jun, Woong (woong at gmail.com)
http://www.woong.org
답변감사합니다^^
와~ 자세한 설명 정말 감사합니다.
다음에 이런 부분 나오면 다신 어렵지 않겠군요 :D
댓글 달기