C语言对组文件处理的相关函数小结

C语言getgrent()函数:从组文件中取得账号的数据
头文件:

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

定义函数:

struct group * getgrent(void);

函数说明:getgrent()用来从组文件(/etc/group)中读取一项组数据, 该数据以group 结构返回. 第一次调用时会取得第一项组数据, 之后每调用一次就会返回下一项数据, 直到已无任何数据时返回NULL.

struct group
{
  char *gr_name; //组名称
  char *gr_passwd; //组密码
  gid_t gr_gid; //组识别码
  char **gr_mem; //组成员账号
}

返回值:返回 group 结构数据, 如果返回NULL 则表示已无数据, 或有错误发生.

附加说明:getgrent()在第一次调用时会打开组文件, 读取数据完毕后可使用endgrent()来关闭该组文件.

错误代码:
ENOMEM:内存不足, 无法配置group 结构。

范例

#include <grp.h>
#include <sys/types.h>
main()
{
  struct group *data;
  int i;
  while((data = getgrent()) != 0)
  {
    i = 0;
    printf("%s:%s:%d:", data->gr_name, data->gr_passwd, data->gr_gid);
    while(data->gr_mem[i])
      printf("%s, ", data->gr_mem[i++]);
    printf("\n");
  }
  endgrent();
}

执行:

root:x:0:root,
bin:x:1:root, bin, daemon,
daemon:x:2:root, bin, daemon,
sys:x:3:root, bin, adm,
adm:x:4:root, adm, daemon
tty:x:5
disk:x:6:root
lp:x:7:daemon, lp
mem:x:8
kmem:x:9:
wheel:x:10:root
mail:x:12:mail
news:x:13:news
uucp:x:14:uucp
man:x:15:
games:x:20
gopher:x:30
dip:x:40
ftp:x:50
nobody:x:99

C语言setgrent()函数:从头读取组文件中的组数据
头文件:

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

定义函数:

void setgrent(void);

函数说明:setgrent()用来将getgrent()的读写地址指回组文件开头。

用法参考 setpwent().

C语言endgrent()函数:关闭文件(关闭组文件)
相关函数:

getgrent, setgrent

头文件:

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

定义函数:

void endgrent(void);

函数说明:endgrent()用来关闭由getgrent()所打开的密码文件。

范例请参考setgrent().

(0)

相关推荐

  • C语言中建立和删除文件连接的相关函数讲解

    C语言link()函数:建立文件连接 头文件: #include <unistd.h> 定义函数: int link (const char * oldpath, const char * newpath); 函数说明:link()以参数newpath 指定的名称来建立一个新的连接(硬连接)到参数oldpath 所指定的已存在文件. 如果参数newpath 指定的名称为一已存在的文件则不会建立连接. 返回值:成功则返回0, 失败返回-1, 错误原因存于errno. 附加说明:link()所建立

  • C语言中对文件最基本的读取和写入函数

    C语言read()函数:读文件函数(由已打开的文件读取数据) 头文件: #include <unistd.h> 定义函数: ssize_t read(int fd, void * buf, size_t count); 函数说明:read()会把参数fd 所指的文件传送count 个字节到buf 指针所指的内存中. 若参数count 为0, 则read()不会有作用并返回0. 返回值为实际读取到的字节数, 如果返回0, 表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动.

  • C语言文件操作 fopen, fclose, mkdir详解

    1.建文件夹 int _mkdir(const char *path,mode_t mode); 函数名: _mkdir 功 能: 建立一个目录 用 法: int _mkdir( const char *dirname ); 头文件库:direct.h 返回值:创建一个目录,若成功则返回0,否则返回-1 ===================================================== 2.打开文件fopen() 函数功能: 打开一个文件 函数原型:FILE * fope

  • C语言中获取文件状态的相关函数小结

    C语言stat()函数:获取文件状态 头文件: #include <sys/stat.h> #include <unistd.h> 定义函数: int stat(const char * file_name, struct stat *buf); 函数说明:stat()用来将参数file_name 所指的文件状态, 复制到参数buf 所指的结构中. 下面是struct stat 内各参数的说明: struct stat { dev_t st_dev; //device 文件的设备编

  • C语言读取文件流的相关函数用法简介

    C语言fread()函数:读文件函数(从文件流读取数据) 头文件: #include <stdio.h> 定义函数: size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream); 函数说明:fread()用来从文件流中读取数据. 参数stream 为已打开的文件指针, 参数ptr 指向欲存放读取进来的数据空间, 读取的字符数以参数size*nmemb 来决定. Fread()会返回实际读取到的nmemb 数目, 如果此值

  • 使用C语言操作文件的基本函数整理

    C语言creat()函数:创建文件函数 头文件: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 定义函数: int creat(const char * pathname, mode_tmode); 函数说明: 1.参数 pathname 指向欲建立的文件路径字符串. 2.Creat()相当于使用下列的调用方式调用open()     open(const char * pathname,

  • C语言以数据块的形式读写文件实例代码

    fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread 函数:相应地写入函数为 fwrite. fread() 函数用来从指定文件中读取块数据.所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制.fread() 的原型为: size_t fread ( void *ptr, size_t size, size_t count, FILE *fp ); fwri

  • C语言对组文件处理的相关函数小结

    C语言getgrent()函数:从组文件中取得账号的数据 头文件: #include <grp.h> #include <sys/types.h> 定义函数: struct group * getgrent(void); 函数说明:getgrent()用来从组文件(/etc/group)中读取一项组数据, 该数据以group 结构返回. 第一次调用时会取得第一项组数据, 之后每调用一次就会返回下一项数据, 直到已无任何数据时返回NULL. struct group { char *

  • R语言操作XML文件实例分析

    XML是一种文件格式,它使用标准ASCII文本共享万维网,内部网和其他地方的文件格式和数据. 它代表可扩展标记语言(XML). 类似于HTML它包含标记标签. 但是与HTML中的标记标记描述页面的结构不同,在xml中,标记标记描述了包含在文件中的数据的含义. 您可以使用"XML"包读取R语言中的xml文件. 此软件包可以使用以下命令安装. install.packages("XML") 输入数据 通过将以下数据复制到文本编辑器(如记事本)中来创建XMl文件. 使用.

  • R语言两组变量特征相关关系热图绘制画法

    目录 准备数据 简单热图 只对列进行聚类 将相关系数显示在图上 在图上加上显著性标记 准备数据 两组变量的数据可以像下面这样处理,分别保存在两个csv文件中. > # 导入数据及数据预处理 > setwd("D:/weixin/") > rows <- read.csv("rows.csv") > cols <- read.csv("cols.csv") > str(rows) 'data.frame':

  • Go语言判断指定文件是否存在的方法

    本文实例讲述了Go语言判断指定文件是否存在的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main    import (     "fmt"     "os" )    func main() {     f, err := os.Open("dotcoo.com.txt")     if err != nil && os.IsNotExist(err) {         fmt.Pri

  • GO语言常用的文件读取方式

    本文实例讲述了GO语言常用的文件读取方式.分享给大家供大家参考.具体分析如下: Golang 的文件读取方法很多,刚上手时不知道怎么选择,所以贴在此处便后速查. 一次性读取 小文件推荐一次性读取,这样程序更简单,而且速度最快. 复制代码 代码如下: func ReadAll(filePth string) ([]byte, error) {  f, err := os.Open(filePth)  if err != nil {   return nil, err  } return iouti

  • go语言读取csv文件并输出的方法

    本文实例讲述了go语言读取csv文件并输出的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (     "encoding/csv"     "fmt"     "io"     "os" ) func main() {     file, err := os.Open("names.txt")     if err != nil {      

  • C语言 格式化读写文件详解

    fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件. 这两个函数的原型为: int fscanf ( FILE *fp, char * format, ... ); int fprintf ( FILE *fp, char * format, ... ); fp 为文件指针,format 为格式控制字符串,... 表示参数

  • C语言在头文件中定义const变量详解

    C语言在头文件中定义const变量详解 在头文件中定义const不会有多变量的警告或错误,如果该头文件被大量包含会造成rom空间的浪费. 通过查看*.i文件的展开呢,可以发现每个.i文件都会有相应的变量展开. 查看*.map文件,能查看到该变量的多个地址分配. 在预编译的时候如果在头文件定义了const变量,每一个包含该头文件的c文件都会将其展开,而在编译的时候不会报错,因为这符合语法规则,每一个包含这个头文件的*.c文件都会编译一次这个变量,分配一个新的地址,然后在链接的时候也不会报错,因为每

  • C语言从txt文件中逐行读入数据存到数组中的实现方法

    首先,要知道数据的存储格式是怎样的, 65 2 722 542 691 514 644 506 588 524 565 558 608 580 648 586 696 572 482 564 第一行表示数字的个数和维数,所以要先读入这些信息: <span style="white-space:pre"> </span>FILE *fp = fopen("2D_Jesscia_keypos.txt", "r"); if (

随机推荐