[오류] fread함수

김태훈·2022년 10월 12일
0

fread를 두번 연속 쓰면, 안되는 경우가 있다.
이 때에는 fseek으로 파일스트림포인터를 옮길것.

구조체 조심할 것 - 동적할당 하고 fread

    _pkthdr *pkthdr;
    pkthdr = (_pkthdr *)malloc(sizeof(_pkthdr));
    //위 동적할당 안하고 fread하면, 절대 안됨.
 

    FILE *pcap_file = fopen("real_new.pcap", "rb");
    if (pcap_file == NULL)
    {
        printf("no such file exit.");
        return 0;
    }
    fseek(pcap_file, 24, SEEK_SET);
    fread(pkthdr, sizeof(_pkthdr), 1, pcap_file);
    printf("%lu\n", pkthdr->timeval._sec);
}

동적할당 하기 싫으면?

int main()
{
    _pkthdr pkthdr;

    FILE *pcap_file = fopen("real_new.pcap", "rb");
    if (pcap_file == NULL)
    {
        printf("no such file exit.");
        return 0;
    }
    fseek(pcap_file, 24, SEEK_SET);
    fread(&pkthdr, sizeof(_pkthdr), 1, pcap_file);
    printf("%lu\n", pkthdr.timeval._sec);
}
profile
기록하고, 공유합시다

0개의 댓글