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; }