![텍스트 파일의 EOF ASCII/HEX 코드](https://rvso.com/image/1417121/%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20EOF%20ASCII%2FHEX%20%EC%BD%94%EB%93%9C.png)
모든 파일, 특히 텍스트 파일의 끝에는 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.txt
type
... 하지만 프로그래밍하는 경우 이러한 문자의 효과를 거의 볼 수 없습니다.
나는 이 글을 쓰는 시점에서 이러한 문자에서 멈추는 함수 호출을 알지 못합니다.
귀하의 소프트웨어/라이브러리에 대한 문서를 읽으십시오. 이들의 효과에 대한 설명이 없으면 이상한 일이 발생하지 않을 것입니다.
줄 끝(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이라는 뜻일까요?