lseek、fseek实例

来源:互联网 发布:js navigator.appname 编辑:程序博客网 时间:2024/06/05 21:50
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <sys/types.h> 
#include <fcntl.h> 
 
#define FOPEN_DEBUG 1 
 
#if FOPEN_DEBUG 
int main(void) 

    int nFile; 
    unsigned long ulTmpFilePosition, ulFilePosition; 
    unsigned int nReadBytes; 
    unsigned char szReadBuf[1024]; 
    int i; 
 
    nFile = open("sample_d0.h264", O_RDONLY); 
    if(nFile < 0) 
        return 0; 
 
    ulTmpFilePosition = lseek(nFile, 0, SEEK_END) - lseek(nFile, 0, SEEK_SET); 
 
    ulFilePosition = 1024; 
     
     
    while(1) 
    { 
        nReadBytes = lseek(nFile, 0, SEEK_END) - lseek(nFile, ulFilePosition, SEEK_SET); 
        nReadBytes = lseek(nFile, 0, SEEK_CUR); 
        if(nReadBytes >= 1024) 
        { 
            memset(szReadBuf, 0x00, sizeof(szReadBuf)); 
            nReadBytes = read(nFile, szReadBuf, sizeof(szReadBuf)); 
            for(i=0; i<nReadBytes; i++) 
                printf("%02x ", szReadBuf[i]); 
            printf("READ FILE BYTES %d\n",nReadBytes); 
            if(nReadBytes == 0) 
                break; 
            getchar(); 
            ulFilePosition = ulFilePosition + nReadBytes + 1; 
        } 
 
    } 
    return 0; 

#else 
int main(void) 

    FILE  *pFile; 
    unsigned long ulTmpFilePosition, ulFilePosition; 
    unsigned int nReadBytes; 
    unsigned char szReadBuf[1024]; 
    int i; 
 
    pFile = fopen("sample_d0.h264", "rb"); 
    if(pFile == NULL) 
        return 0; 
 
    ulTmpFilePosition = fseek(pFile, 0, SEEK_END) - fseek(pFile, 0, SEEK_SET); 
 
    ulFilePosition = 1024; 
 
 
    while(1) 
    { 
        nReadBytes = fseek(pFile, 0, SEEK_END) - fseek(pFile, ulFilePosition, SEEK_SET); 
        nReadBytes = fseek(pFile, 0, SEEK_CUR); 
        if(nReadBytes >= 1024) 
        { 
            memset(szReadBuf, 0x00, sizeof(szReadBuf)); 
            nReadBytes = fread(szReadBuf, sizeof(szReadBuf), 1, pFile); 
            for(i=0; i<nReadBytes; i++) 
                printf("%02x ", szReadBuf[i]); 
             
            if(nReadBytes == 0) 
                break; 
            ulFilePosition = ulFilePosition + nReadBytes + 1; 
        } 
        printf("READ FILE BYTES %d\n",nReadBytes); 
        getchar(); 
 
    } 
    return 0; 

#endif
原创粉丝点击