programing

c.의 EOF의 아스키 값은 얼마입니까?

closeapi 2023. 8. 19. 10:18
반응형

c.의 EOF의 아스키 값은 얼마입니까?

i의 ASCII 값은 누구나 알고 있습니다.

나는 노력한다printf("%d",EOF);

그러나 그것의 인쇄물.-1

그리고 또한 시도합니다.printf("%c",EOF);

하지만 인쇄된 빈 화면입니다.

그래서 누구나 어떤 열쇠에 대한 것인지 알 수 있습니다.EOF.

EOF(C 언어에서 정의된 대로)는 문자가 아닙니다/ASCII 값이 아닙니다.그렇기 때문에getc반환합니다.int전혀unsigned char읽기 문자가 다음 범위의 값을 가질 수 있기 때문입니다.unsigned char의 반환 가치.getc또한 문자가 아닌 값을 나타낼 수 있어야 합니다. EOF(반드시 부정적이어야 함).

EOF의 실제 값은 시스템 정의이며 표준의 일부가 아닙니다.

EOF이다.int음의 값으로 인쇄하려면 다음을 사용해야 합니다.%d형식 문자열이것은 시스템에 대한 가치만 알려줄 뿐입니다.당신은 그것의 가치가 무엇인지 신경쓰지 말아야 합니다.

EOF의 ASCII 값은 없습니다.127자를 포함하는 ASCII 표준이 있지만 EOF는 그 중 하나가 아닙니다.EOF는 -1입니다. 왜냐하면 그것이 그들이 특정 컴파일러에서 #defined로 결정한 것이기 때문입니다. 다른 것일 수도 있습니다.

헤퍼넌이 말했듯이, 그것은 시스템이 정의한 것입니다.EOF 상수(constand?)를 통해 액세스할 수 있습니다.

#include <stdio.h>

int main(void)
{
    printf("%d\n", EOF);
}

컴파일 후:

c:\>a.exe
-1
c:\>

EOF는 그들이 말한 것처럼 ASCII 값을 가지고 있지 않습니다... 문제 없습니다.

또한, 당신은 EOF의 숫자 표현인 마지막에 나타나는 이상한 문자를 피할 수 있습니다.if다음은 조건의 예입니다.

#include <stdio.h>

int main(void)
{
 FILE *file  = fopen("/home/abdulrhman/Documents/bash_history.log", "r");
 FILE *file2 = fopen("/home/abdulrhman/Documents/result.txt", "w");
 file  = 
 file2 = 
 char hold = 'A';

 while(hold != EOF)
  {
    hold = getc(file);
    if(hold == EOF) break; // to prevent EOF from print to the stream
    fputc(hold, file2);
  }

 fclose(file);
 return 0;
}

바로 그거야

EOF가 ASCII 문자가 아닙니다.문자 크기와 비교하여 크기가 1바이트가 아니며 이는 다음을 통해 확인할 수 있습니다.

int main() {
    printf("%lu", sizeof(EOF));
    return 0;
}

그러나 항상 -1로 정의되어 있습니다.

int main() {
    printf("%d",EOF);  
    return 0;
}

EOF의 키 조합은 +D입니다.EOF에 해당하는 문자는 기계에 따라 다릅니다.다음을 통해 확인할 수 있습니다.

int main() {
    printf("%c", EOF)
    return 0;
}

모든 목적을 위해 0x04 EOT(전송 종료 시 해당 지점에서 파일을 중지 및 차단하기 위한 신호 및 읽기 기능이 정상적으로 작동합니다.

언급URL : https://stackoverflow.com/questions/7622699/what-is-the-ascii-value-of-eof-in-c

반응형