programing

C에서 FILE 키워드는 정확히 무엇입니까?

stoneblock 2023. 7. 23. 13:56

C에서 FILE 키워드는 정확히 무엇입니까?

저는 취미로 C를 배우기 시작했고 꽤 오랫동안 FILE을 파일 포인터 선언으로 맹목적으로 사용했는데, 저는 궁금했습니다.이것은 C가 파일을 처리하기 위한 키워드입니까, 아니면 특수 데이터 유형입니까?내부 및 기타 데이터에 대한 파일 스트림이 포함되어 있습니까?포인터로 정의되는 이유는 무엇입니까?

조금 더 명확하게 하기 위해 제가 의미하는 바를 보여주는 예는 다음과 같습니다.

FILE* fp; //<-- this
fp = fopen("datum.txt", "r");

while(!feof(fp)) {
   // etc.
}

이것은 C가 파일을 처리하기 위한 키워드입니까, 아니면 특별한 데이터 유형입니까?

당신이 언급하고 있는 것은 표준 io 라이브러리에서 사용하는 typed'd 구조와 그 함수들의 집합입니다.

포인터로 정의되는 이유는 무엇입니까?

구조체에 대한 포인터를 사용하여 구조체를 함수에 매개 변수로 전달할 수 있습니다.이것은 예를 들어 fgets 또는 fgetc가 수용하는 형태입니다.function(FILE* fp)

fopen 함수는 새로 만든 FILE 구조체에 포인터를 반환하고, 이 새 포인터를 사용하지 않는 구조체에 할당하면 동일한 것을 가리키게 됩니다.

내부 및 기타 데이터에 대한 파일 스트림이 포함되어 있습니까?

구조 정의는 설명보다 조금 더 허황된 것처럼 보입니다.이는 mystdio.h, MinGW32 5.1.4에서 직접 가져온 것입니다.

typedef struct _iobuf
{
    char*   _ptr;
    int _cnt;
    char*   _base;
    int _flag;
    int _file;
    int _charbuf;
    int _bufsiz;
    char*   _tmpfname;
} FILE;

여기에는 그 앞에 있는 사랑스러운 논평이 포함되어 있습니다.

어떤 사람들은 제정신이 아닌 사람들이 이 구조의 내부를 이용해서는 안 된다고 믿습니다.

이 구조의 내용은 다른 구현에서 크게 변경되는 것으로 보이며, glibc 소스는 일반적으로 어떤 형태로든 주석을 달지만 이를 위한 구조는 많은 코드 아래 묻혀 있습니다.

앞서 언급한 경고에 주의를 기울이고 그것이 무엇을 하는지 걱정하지 않는 것이 타당할 것입니다.:)

FILE일반적으로 형식 정의 이름으로 사용되는 식별자입니다.structstdio 도서관은 보통 다음과 같은 것을 가지고 있습니다.

typedef struct {
   ...
} FILE;

어딘가에.FILE 포인터를 다루는 모든 stdio 함수는 다음의 내용을 알고 있습니다....구조 부재에 액세스할 수 있습니다.C 프로그래머는 다음과 같은 기능을 사용해야 합니다.fopen,feof,ferror,ungetc파일 구조를 생성하고 운영하는 등의 작업을 수행합니다.이러한 유형을 불투명(즉, 내부를 엿볼 수는 없지만 접근자 기능을 사용해야 함)이라고 합니다.

포인터로 정의되는 이유는 무엇입니까?

절대 아닙니다.코드가 포인터를 선언하는 구조입니다.에 있는 별표를 확인합니다.

FILE* fp;

이는 별표가 형식 이름이 아닌 변수 식별자와 함께 사용되어야 하는 또 다른 예입니다.

FILE *fp;

이것은 키워드가 아니라 파일로 작동하도록 ANSIC 표준에 정의된 데이터 유형입니다.일반적으로 라이브러리 함수에 대한 파일 및 현재 상태를 설명하는 내부 구조를 가리킵니다.

이것은 특별한 데이터 유형입니다.파일 핸들과 다양한 stdio 호출에서 내부적으로 사용되는 다양한 플래그가 포함되어 있습니다.실제로 그 안에 무엇이 있는지 알 필요는 없습니다. 단지 전달할 수 있는 데이터 유형이기 때문입니다.

http://www.cplusplus.com/reference/clibrary/cstdio/FILE/

하지만 관심이 있다면 다음과 같습니다.

http://en.allexperts.com/q/C-1587/2008/5/FILE-Structure.htm

언급URL : https://stackoverflow.com/questions/5672746/what-exactly-is-the-file-keyword-in-c