블로그는 귀차니즘

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 - 팡야계산기 (2)2008/02/16
War 3 Axis - 워크래프트3 후킹 프로그램 (1)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 다음페이지 ▶

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

카테고리

  • 전체 (119)
    • Computer (3)
    • Language (14)
    • Reverse Engineering (1)
    • Algorithm (10)
    • TopCoder (3)
    • Library (2)
    • Programming (21)
    • Programming Tip (9)
    • PSP-Programming (10)
    • Program (5)
    • Small Talk (33)
    • Document (4)
    • OS Develope (4)

최근에 올라온 글

  • Dovelet - (1).
  • Script Interpreter - b....
  • VirtualHttpServer - 가.... (2)
  • 음.. 여러가지 일이 있.... (2)
  • 어후.. 드디어 인터럽트....

최근에 달린 댓글

  • 좋은정보 감사합니다. :) 출.... 블루아사 03:10
  • 헠 ㅋ 다음에도 들러주세용 ㅋㅋ. 귀차니스트 03/09
  • ㅎㅎ RSS로 첨 온 글이네.ㅋ. 당구리 02/22
  • 음.. 한글화 파일 0.5 버젼은.... 귀차니스트 02/22
  • 관리자만 볼 수 있는 댓글입.... 비밀방문자 01/30

달력

«   2010/03   »
일 월 화 수 목 금 토
  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 31      

링크

  • kkamagui 프로그래밍 세상.
  • runner님의 이글루.
  • 당구리의 마굿간.
  • 동우fly.
  • 류광의 번역 이야기.
  • 서광열의 프로그래밍 언....
  • 준호씨의 블로그.
  • 최익필의 이름없는 블로그.
  • 위키는 귀차니즘.

최근에 받은 트랙백

  • 한게임 테트리스 인공지.... 고니's Life 2009
  • ACM 706 (Uva ID) : LCD.... 알고리즘 트레이닝 : Oh... 2009
  • 문제 4 : LCD 디스플레.... 최익필의 이름없는 블로그 2009
  • 궁극의 예외처리. 이름없는 블로그 2008
  • Maximum sum. 티스토리 지점 2008

글 보관함

  • 2010/03 (2)
  • 2010/02 (1)
  • 2010/01 (1)
  • 2009/12 (3)
  • 2009/08 (1)

태그목록

  • Secure
  • Compiler
  • OpenMP
  • Try
  • Bootloader
  • PSP
  • Singleton
  • spirit
  • TTF
  • 파이널 데이터
  • ICPC
  • Hexrays
  • 인코딩
  • STL
  • 병렬
  • smart Pointer
  • HTTP
  • HTML
  • interface design guide
  • 타이틀
  • Generics
  • std::copy
  • 유니코드
  • Printer
  • Rest
  • Codejock
  • 파티션
  • OS
  • Warcraft III
  • FTP

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