블로그는 귀차니즘

First Sensation
  • 공지
  • 지역로그
  • 태그
  • 방명록

\r\n 과 \n 차이 때문에 생기는 문제

Program 2008/04/15 22:07 귀차니스트

  POSIX 운영체제와 윈도우즈 환경을 왔다갔다 사용하셨던 분은 아마도 똑같은 문제를 한 번쯤 겪어보셨을 것이라고 생각합니다. 무엇이냐구요? 아마도 주로 텍스트 쪽에서 생기는 문제일겁니다. 어떤땐 php소스를 업로드 했다가 다운로드 받았더니 그런 적도 있었습니다.



  바로 위와 같은 현상들!! 이제 아~ 아시는 분이 계시진 않는가요? 아니면 이미 눈치채셨을지도 모르겠군요. 이 현상의 원인은 뉴라인에 대한 데이터가 달라서 생기는 문제입니다. 노트패드에서는 "\r\n"이 들어와야만 새줄로 취급을 하게 되죠. 워드패드나 좀 고급스러운 기능을 지원하는 글 편집기에서 열어보시면 아마도 이와 같은 문제는 보이지 않을겁니다.
  이게 대학교 1학년 말쯤인지, 2학년 1학기 쯤인지는 잘 모르겠지만 데이터를 읽다가 이런 현상을 보게 되었고 그 때 간단하게 프로그램도 만들어서 썼습니다. GUI는 아니더라도 콘솔로 만들어 썼습니다.
  첨부한 파일을 실행하면 됩니다. 굳이 어렵지 않게 그냥 exe파일을 어디에 둔 다음 원하는 변환 파일을 exe파일 위로 드래그앤 드롭하시면 됩니다. 지금와서 굳이 GUI로 만드는 것도 왠지 아닌것 같고, 복잡한 코드가 아닌 아주 간단한 코드기에 그냥 올립니다.

Convert.cpp (Language : cpp)
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. void remakeName( char *srcName, char *dstName );
  7.  
  8. int main( int argc, char **argv )
  9. {
  10.     char OutFilename[ 256 ] = {0};
  11.  
  12.     if( argc <= 1 ) {
  13.         return 0;
  14.     }
  15.  
  16.     for( int i = 1; i < argc; i++ ) {
  17.  
  18.         ifstream inFile;
  19.         ofstream outFile;
  20.  
  21.         memset( OutFilename, 0, sizeof( OutFilename ));
  22.         inFile.open( argv[i], ios::in );
  23.         remakeName( argv[i], OutFilename );
  24.  
  25.         if( inFile.is_open() )
  26.         {   
  27.             cout << argv[i] << " -> " << OutFilename << endl;
  28.             outFile.open( OutFilename , ios::out );
  29.  
  30.            
  31.             while( inFile.peek() != -1 )
  32.             {
  33.                 char inChar = inFile.get();
  34.                
  35.                 if( inChar == 10 )
  36.                     inChar = '\n';
  37.  
  38.                 outFile.put( inChar );
  39.             }
  40.  
  41.             outFile.close();
  42.             inFile.close();  
  43.         }
  44.     }
  45.  
  46.     return 0;
  47. }
  48.  
  49. void remakeName( char *srcName, char *dstName )
  50. {
  51.     char *indexDot = strchr( srcName, '.' );
  52.     int cpChar = indexDot - srcName;
  53.    
  54.     strncpy( dstName, srcName, cpChar );
  55.     strcat( dstName, "_1" );
  56.     strcat( dstName, indexDot );
  57. }

  예전에 C++ 코드로 C 스타일 코딩을 했던건데, 그냥 어떻게 이루어졌는지만 대충 훑으시면 됩니다. 파일 명이 들어오면 _1 을 덧붙여서 저장해주는 것으로 되어있습니다. 굳이 다른건 어려운 것도 아니니 프로그램이 혹시 필요하시면 사용하시면 됩니다.

LinToWin.rar

크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

"Program" 분류의 다른 글

재귀적 합성이랄지.. (0)2008/10/13
Bitmap Filtering - 비트맵 필터링 (0)2008/04/04
PangCal - 팡야계산기 (0)2008/02/16
War 3 Axis - 워크래프트3 후킹 프로그램 (0)2008/02/16
2008/04/15 22:07 2008/04/15 22:07
TAG Linefeed, Newline, \r\n
받은 트랙백이 없고, 댓글이 없습니다.

트랙백 주소 :: http://www.filewiki.net/tc/trackback/51

댓글을 달아 주세요

◀ 이전페이지 1 ... 55 56 57 58 59 60 61 62 63 ... 108 다음페이지 ▶

블로그 이미지
First Sensation 귀차니스트
rss
  • 관리자
  • 글쓰기

카테고리

  • 전체 (108)
    • Computer (3)
    • Language (14)
    • Reverse Engineering (1)
    • Algorithm (9)
    • TopCoder (3)
    • Library (2)
    • Programming (19)
    • Programming Tip (9)
    • PSP-Programming (10)
    • Program (5)
    • Small Talk (29)
    • Document (4)

최근에 올라온 글

  • 한게임 자동테트리스 Ve....
  • Intel 64 And IA32 Arch.... (1)
  • 한게임 자동테트리스 Ve.... (18)
  • 재귀적 합성이랄지...
  • 또 오랜기간의 공백을....

최근에 달린 댓글

  • 오오~ 멋진데 :) 좋은 일 하.... kkamagui 11/17
  • .. 그렇군요;;.. 사실 뭐 저.... 귀차니스트 11/16
  • 고생은하셨다만.. 벌써 프로.... 뉴올리언스 11/16
  • 이 부분은 본문에 명시되어.... 귀차니스트 11/15
  • 관리자만 볼 수 있는 댓글입.... 비밀방문자 11/15

달력

«   2008/11   »
일 월 화 수 목 금 토
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

링크

  • kkamagui 프로그래밍 세상.
  • 류광의 번역 이야기.
  • 서광열의 프로그래밍 언....
  • 준호씨의 블로그.
  • 최익필의 이름없는 블로그.
  • 위키는 귀차니즘.

최근에 받은 트랙백

  • 궁극의 예외처리. 이름없는 블로그 05/16
  • Maximum sum. 티스토리 지점 04/09

글 보관함

  • 2008/11 (3)
  • 2008/10 (2)
  • 2008/09 (3)
  • 2008/08 (5)
  • 2008/07 (13)

태그목록

  • ASM
  • Catch
  • 파이널 데이터
  • 표준
  • HDTV
  • priority_queue
  • 전위연산
  • C#
  • 테트리스
  • Newline
  • 오보에
  • 개발일지
  • PSP
  • .Net
  • 입양
  • Image Processing
  • Generics
  • 개인정보유출
  • 디자인
  • std::auto_ptr
  • 예외
  • 인코딩
  • HP
  • Programming
  • Filtering
  • 뻘글
  • 분양
  • ostream_iterator
  • 파티션
  • STL

지역로그 : 태그 : 방명록 : 관리자 : 글쓰기
귀차니스트’s Blog is powered by Textcube 1.7.5 : Risoluto / Designed by DesignNia.net