C语言 File文件处理 读文件

在C语言程序开发中,也会遇到很多文件上传,文件写入等对于文件的操作业务需要开发,文件处理也是任何应用程序的重要组成部分。C语言有几种创建,读取,更新和删除文件的方法。本文主要介绍C语言 File文件操作读文件。

1、读文件

要使用C语言读取文件,可以使用size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream),此方法返回成功读取的元素总数会以 size_t 对象返回,size_t 对象是一个整型数据类型。如果总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。

例如,

#include<stdio.h>
#define nmemb 3
struct test
{
  char name[20];
  int size;
} s[nmemb];
int main(){
  FILE * stream;
  int i;
  stream = fopen("/tmp/fwrite","r");
  fread(s,sizeof(struct test),nmemb,stream);
  fclose(stream);
  for(i=0;i<nmemb;i++)
    printf("name[%d]=%-20s:size[%d]=%d\n",i,s[i].name,i,s[i].size);
}

文件读取还有其它函数,可以参考下面的文档,

相关函数C语言File文件处理相关函数

2、获取文件信息

要获取有关文件的更多信息,可以使用int fstat(int fildes, struct stat *buf);函数。

stat文件信息结构体:

struct stat {  
    dev_t         st_dev;      /* device */  
    ino_t         st_ino;      /* inode */  
    mode_t        st_mode;     /* protection */  
    nlink_t       st_nlink;    /* number of hard links */  
    uid_t         st_uid;      /* user ID of owner */  
    gid_t         st_gid;      /* group ID of owner */  
    dev_t         st_rdev;     /* device type (if inode device) */  
    off_t         st_size;     /* total size, in bytes */  
    blksize_t     st_blksize;  /* blocksize for filesystem I/O */  
    blkcnt_t      st_blocks;   /* number of blocks allocated */  
    time_t        st_atime;    /* time of last access */  
    time_t        st_mtime;    /* time of last modification */  
    time_t        st_ctime;    /* time of last change */  
}; 

例如,

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>

#include <sys/types.h>
#include <sys/stat.h>

int main ( int argc, char *argv[])
{
    struct stat FileAttrib;


    if (stat("/etc/passwd", &FileAttrib) < 0)
        printf("File Error Message = %s\n", strerror(errno));
    else
        printf( "Permissions: %d\n", FileAttrib.st_mode );

    return 0;
}

推荐阅读
cjavapy编程之路首页