텍스트 파일의 EOF ASCII/HEX 코드

텍스트 파일의 EOF ASCII/HEX 코드

모든 파일, 특히 텍스트 파일의 끝에는 16진수 코드가 있습니다.EOF또는없는성격. 그리고 프로그램을 작성하고 텍스트 파일의 내용을 읽으려면 해당 EOF 16진수 코드를 받을 때까지 읽기 함수를 보냅니다.

내 질문: 텍스트 파일의 16진수 보기를 보기 위해 몇 가지 도구를 다운로드했습니다. 하지만 16진수 코드는 볼 수 없습니다.EOF(파일 끝/NULL) 또는EOT(텍스트 끝)


ASCII/16진수 코드 테이블:

여기에 이미지 설명을 입력하세요

이것은 Hex 뷰어 도구의 출력입니다.

여기에 이미지 설명을 입력하세요


참고: 내 입력 파일은 내용이 ""EOF"의 16진수 코드는 어디에 있습니까?"라는 텍스트 파일입니다.

답변1

전통적으로 일부 상황에서는 파일 끝 '문자'가 있습니다. MS-DOS/CMD.EXE는 CTRL+를 사용합니다. Z - Linux는 CTRL+를 사용합니다.D

ASCII 테이블에서 CTRL-Z는 코드 26이고 CTRL-D는 코드 4입니다.

이는 사용하는 상황에서 여전히 사용됩니다 stdin("C" 프로그래밍 및 일반 콘솔/tty IO에 적용되는 의미).

예를 들어

C:\> myFile.txt를 복사하세요.
파일에 들어갈 텍스트입니다. Enter
CTRL+Z
C:\> myFile.txt를 입력하세요.
파일에 들어갈 텍스트입니다.
씨:\>

Linux'en에서는 시작하는 것과 동일한 순서가 작동합니다.

$ 고양이 >myFile

CTRL+ 로 끝나고 D대신 .cat myFile.txttype

... 하지만 프로그래밍하는 경우 이러한 문자의 효과를 거의 볼 수 없습니다.
나는 이 글을 쓰는 시점에서 이러한 문자에서 멈추는 함수 호출을 알지 못합니다.
귀하의 소프트웨어/라이브러리에 대한 문서를 읽으십시오. 이들의 효과에 대한 설명이 없으면 이상한 일이 발생하지 않을 것입니다.

줄 끝(CR 및 LF 조합, 코드 13 및 10)은 약간 다르지만 한 시스템에서 다른 시스템으로 TEXT 파일을 전송하면 상당히 지저분해질 수 있습니다. 이 목적을 위해 Linux'en에서 쉘 명령을 사용할 수 있습니다 unix2dos.dos2unix

샘플 bash 세션:

$ echo -e "첫 번째 줄\n\x04두 번째 줄."
첫 번째 줄
두 번째 줄.

$ echo -e "첫 번째 줄\n\x04두 번째 줄." | od -t x1z
0000000 46 69 72 73 74 20 6c 69 6e 65 0a 04 53 65 63 6f >첫번째 줄..세코<
0000020 6e 64 20 6c 69 6e 65 2e 0a >두 번째 줄..<
0000031

$ echo -e "첫 번째 줄\n\x04두 번째 줄." | 그렙 라인
첫 번째 줄
두 번째 줄.

$ 고양이 >myFile.txt
이것 좀 봐

$ 고양이 myFile.txt
이것 좀 봐

$

답변2

아니요, EOF는 특수문자가 아닙니다. ㅋㅋㅋ :)

구경하다:http://www.cplusplus.com/reference/cstdio/EOF/

기본적으로 매크로입니다.

End-of-File
It is a macro definition of type int that expands into a negative integral constant expression (generally, -1).

It is used as the value returned by several functions in header <cstdio> to indicate that the End-of-File has been reached or to signal some other failure conditions.

It is also used as the value to represent an invalid character. 

In C++, this macro corresponds to the value of char_traits<char>::eof().

즉, API는 파일 한 줄을 읽으려고 시도하고 -1을 얻은 다음 EOF를 반환합니다. EOF와 달리 CR/LF는 특수 문자이므로 줄 바꿈이 있으면 HEX 편집기에서 볼 수 있습니다.

'\n' or '0x0A' (10 in decimal) -> This character is called "Line Feed" (LF).
'\r' or '0x0D' (13 in decimal) -> This one is called "Carriage return" (CR).

파일 외에도 메모리의 문자 배열 끝에 '\0' 문자가 있으며 이는 문자열의 끝을 표시합니다. 그것이 없으면 컴퓨터는 해당 문자 그룹이 얼마나 오래 지속되는지 알 수 없습니다. 문자열을 인쇄/복사/무엇이든 인쇄/복사할 때 null 문자를 찾을 때까지 문자를 계속 인쇄/복사합니다. 그 때 중지해야 합니다.

아마도 이것이 NULL이라는 뜻일까요?

관련 정보