2015-01-06 2 views
0

C# 및 C++가 모두 포함 된 코드로 파일에 액세스하고있었습니다.같은 파일 : 메모장에서 워드 패드를 열 때

enter image description here

그러나 워드 패드로 열 같은 파일은 각 옆에 (같은 하나 개의 정수를 찾습니다 : 파일을 메모장에서 열 경우는 다음과 같습니다 (왼쪽에서 하나의 정수와 숫자의 나머지는 두 배입니다)) 더블 :

enter image description here

왜 서로 다른 보이나요? 메모장과 워드 패드 파일을 읽기 위해 여러 가지 방법을 사용하기 때문에

+0

왜 이것이 'C#'질문이라고 생각하십니까? 파일 내용의 16 진수 덤프를 제공 할 수 있습니까? – Sinatr

+1

줄 끝이 잘못되었습니다. Windows에서 줄 끝은 유닉스 등에서'\ r \ n'이고 사과 시스템에서는'\ r'이어야합니다. 편집 : 사과의 시스템 정보를 수정했습니다. – lared

+0

@Sinatr 파일은 C++로만 작성한 경우 (메모장 및 워드 패드에서 모두 동일하게 나타남) C 및 C++로 모두 액세스 한 후에 메모장 및 워드 패드에서 다르게 보입니다. 어떻게 헥스 덤프를 제공 할 수 있습니까? – user3405291

답변

3

. Windows는 개행 문자가 두 문자 (\r\n)로 구성되어있는 반면, 다른 운영 체제, 즉 유닉스 기반 문자는 \n 또는 \r 만 사용합니다. 워드 패드는 두 줄 바꿈 유형을 모두 인식 할만큼 똑똑하지만 메모장은 아닙니다.

+0

Got corrected : 이제'\ n \ '대신'\ r \ n '을 사용했습니다. – user3405291

1

, apperantly이 파일은 ... 모두 다르게 읽을 수있는 방식으로 기록

그것은 개행 문자가 파일로 인코딩되는 방식과 관련이있다
1

메모장 및 워크 패트 이해하기 때문에 \ 연구 \ n 다르게

1

메모장과 워드 패드 치료 "새로운 라인은"다른 - 하나 그냥 \n 받아들이는 또 다른 "새로운 라인을"(인식 \r\n가 필요하며 일부는 \n\r로 확인 될 것).

다른 많은 편집자에게도 마찬가지입니다. 나는. Visual Studio에서 파일을 열려고하면 "Unix 새 행을 Windows 새 행으로 변환 하시겠습니까?"와 같은 질문을하게됩니다.

당신은 C#을 사용 WriteLine이 아닌 수동으로 \n를 추가하거나 적어도 스트리밍 "새로운 라인"을 작성 Envirnment.NewLine을 사용하여 파일을 작성합니다.

마찬가지로 C++에서 메모장이나 그러한 시퀀스가 ​​필요한 다른 편집기에서 파일을 열어야하는 경우 (대부분의 편집자/뷰어가 괜찮을 수도 있음) "\ n \"대신 "\ r \ n"을 쓸 수 있습니다.

관련 문제