linuxC常用函数

目录

C语言常用函数

access(char* path,int mode)函数:用于检查文件

atoi()函数:将字符串转换成int(整数)

execl()函数:执行文件函数

fopen()函数:打开指定路径的文件,获取指向该文件的指针。

fwrite()函数:将一块内存区域中的数据写入到本地文本

fread()函数:从一个文件流中读取数据

fclose()函数:关闭一个流,关闭打开文件、

goto语句也称为无条件转移语句

lstat函数:或取文件相关信息

Memcpy函数:从源src所指的内存地址的起始位置开始,拷贝n个字节的数据到目标dest所指的内存地址的起始位置中

open()函数:打开文件

opendir()函数:打开一个目录,在失败的时候返回一个空的指针。

readdir函数:读取opendir 返回值的那个列表

pipe()函数:建立管道

S_ISDIR()函数:判断一个路径是否为目录

strcat()函数:用于拼接字符

strcpy()函数:复制字符串

strncpy()函数:用来复制字符串的前n个字符


 

access(char* path,int mode)函数:用于检查文件

    参数path 是访问文件所在的路径名,mode是访问判断模式,是否存在(mode 00),是否只可读(mode 02),是否只可写(mode 04),是否可读写(mode 06)。

atoi()函数:将字符串转换成int(整数)

atof()函数:将字符串转换成float(浮点数)

头文件:#include

原型为:int atoi (const char * str);

返回值:返回转换后的整型数;如果 str 不能转换成 int 或者 str 为空字符串,那么将返回 0。

函数说明:atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。

execl()函数:执行文件函数

头文件: #include

定义函数:intexecl(const char * path, const char * arg, ...);

函数说明:execl()用来执行参数path 字符串所代表的文件路径, 接下来的参数代表执行该文件时传递过去的argv(0),argv[1], ..., 最后一个参数必须用空指针(NULL)作结束.

execl(“绝对路径” , ”相关参数”… , ”NULL”);

返回值:如果执行成功则函数不会返回,执行失败则直接返回-1, 失败原因存于errno 中.

fopen()函数:打开指定路径的文件,获取指向该文件的指针。

原型:FILE * fopen(const char * path,const char * mode);

参数:path: 文件路径,如:"F:\Visual Stdio 2012\test.txt"

      mode: 文件打开方式,例如:

             "r" 以只读方式打开文件,该文件必须存在。

             "w" 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

            "w+" 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

             "a" 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

             "a+" 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。(原来的EOF符不保留)

            "wb" 只写打开或新建一个二进制文件,只允许写数据。

            "wb+" 读写打开或建立一个二进制文件,允许读和写。

             "ab" 追加打开一个二进制文件,并在文件末尾写数据。

             "ab+"读写打开一个二进制文件,允许读,或在文件末追加数据。  

 返回值: 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。

fwrite()函数:将一块内存区域中的数据写入到本地文本

原型:size_t  fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

参数:buffer:指向数据块的指针

      size:每个数据的大小,单位为Byte(例如:sizeof(int)就是4)

      count:数据个数

      stream:文件指针

返回值:随着调用格式的不同而不同:

    (1) 调用格式:fwrite(buf,sizeof(buf),1,fp);

    成功写入返回值为1(即count)

    (2)调用格式:fwrite(buf,1,sizeof(buf),fp);

    成功写入则返回实际写入的数据个数(单位为Byte)

注意:写完数据后要调用fclose()关闭流,不关闭流的情况下,每次读或写数据后,文件指针都会指向下一个待写或者读数据位置的指针。

fread()函数:从一个文件流中读取数据

原型:size_t fread(void *buffer, size_t size, size_t count, FILE *stream);

参数:buffer:指向数据块的指针

           size:每个数据的大小,单位为Byte(例如:sizeof(int)就是4)

           count:数据个数

           stream:文件指针

返回值:随着调用格式的不同而不同:

(1) 调用格式:fread(buf,sizeof(buf),1,fp);

读取成功时:当读取的数据量正好是sizeof(buf)个Byte时,返回值为1(即count)

                       否则返回值为0(读取数据量小于sizeof(buf))

(2)调用格式:fread(buf,1,sizeof(buf),fp);

读取成功返回值为实际读回的数据个数(单位为Byte)

fclose()函数:关闭一个流,关闭打开文件、

原型:int fclose(FILE *stream);

参数:stream为文件指针,文件描述符

返回值:如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。

goto语句也称为无条件转移语句

格式:goto <标号>;

其中标号需要申请,在程序开头写label <标号1>,<标号2>,……;

标号必须为四位以内的正整数。

在该段落内还需要有<标号>:语句 表示将要转向的方向。

lstat函数:或取文件相关信息

原型: int lstat(const char *path, struct stat *buf);   

参数:path:文件路径名。filedes:文件描述词。buf:是以下结构体的指针

   struct stat {   

dev_t st_dev; /* 文件所在设备的标识 */   

ino_t st_ino; /* 文件结点号 */   

mode_t st_mode; /* 文件保护模式 */   

nlink_t st_nlink; /* 硬连接数 */   

uid_t st_uid; /* 文件用户标识 */   

gid_t st_gid; /* 文件用户组标识 */   

dev_t st_rdev; /* 文件所表示的特殊设备文件的设备标识 */   

off_t st_size; /* 总大小,字节为单位 */   

blksize_t st_blksize; /* 文件系统的块大小 */   

blkcnt_t st_blocks; /* 分配给文件的块的数量,512字节为单元 */   time_t st_atime; /* 最后访问时间 */   

time_t st_mtime; /* 最后修改时间 */   

time_t st_ctime; /* 最后状态改变时间 */   

};

返回值:成功执行时,返回0。失败返回-1,errno被设为以下的某个值   

EBADF: 文件描述词无效   EFAULT: 地址空间不可访问   ELOOP: 遍历路径时遇到太多的符号连接   ENAMETOOLONG:文件路径名太长   ENOENT:路径名的部分组件不存在,或路径名是空字串   ENOMEM:内存不足   ENOTDIR:路径名的部分组件不是目录

Memcpy函数:从源src所指的内存地址的起始位置开始,拷贝n个字节的数据到目标dest所指的内存地址的起始位置中

头文件:#include

原型:void *memcpy(void*dest, const void *src, size_t n);

说明: 

  1. src和dest所指内存区域不能重叠,函数返回指向dest的指针。如果src和dest以任何形式出现了重叠,它的结果是未定义的。
  2. 与strcpy相比,memcpy遇到’\0’不结束,而且一定会复制完n个字节。只要保证src开始有n字节的有效数据,dest开始有n字节内存空间就行。
  3. 如果目标数组本身已有数据,执行memcpy之后,将覆盖原有数据(最多覆盖n个)。如果要追加数据,则每次执行memcpy()后,要将目标地址增加到要追加数据的地址。
  4. source和destin都不一定是数组,任意的可读写的空间均可。

open()函数:打开文件

头文件:#include     #include     #include

定义函数:int open(const char * pathname, int flags);

int open(const char * pathname, int flags, mode_t mode);

返回值:若成功则返回0,否则返回-1。

opendir()函数:打开一个目录,在失败的时候返回一个空的指针。

头文件:#include

  #include

原型:DIR* opendir (const char * path ); (获取path子目录下的所由文件和目录的列表,如果path是个文件则返回值为NULL)

返回值(DIR): DIR 结构体的原型为:struct_dirstream

readdir函数:读取opendir 返回值的那个列表

头文件:#include

原型:struct dirent* readdir(DIR* dir_handle); (个人理解循环读取dir_handle,目录和文件都读)

返回值:返回dirent结构体指针,dirent结构体

pipe()函数:建立管道

头文件:#include

定义函数:int pipe(int filedes[2]);

函数说明:pipe()会建立管道,并将文件描述词由参数 filedes 数组返回。

    filedes[0]为管道里的读取端,所以pipe用read调用的

    filedes[1]则为管道的写入端。

返回值: 若成功则返回零,否则返回-1,错误原因存于 errno 中。

S_ISDIR()函数:判断一个路径是否为目录

         S_ISDIR( statbuf.st_mode )的函数功能是判断statbuf所指向文件(也就是FileName)是否为目录(dir)类型。

strcat()函数:用于拼接字符

接受两个字符串作为参数。该函数把第2个字符串的备份附加在第1个字符串末尾,并把拼接后形成的新字符串作为第1个字符串,第二个字符串不变。

strcat()函数的类型是char *(即,指向char的指针)。strcat()函数返回第一个参数,即拼接第2个字符串后的第1个字符串的地址。

strcpy()函数:复制字符串

头文件:#include

原型:extern char *strcpy(char *dest,char *src);

功能:把src所指由NULL结束的字符串复制到dest所指的数组中

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。

strncpy()函数:用来复制字符串的前n个字符

头文件:#include

原型:char * strncpy(char *dest, const char *src, size_t n);

参数说明:dest 为目标字符串指针,src 为源字符串指针。

说明:strncpy()会将字符串src前n个字符拷贝到字符串dest。

使用strncpy()最安全方式是使n等于strlen(src)+1,即拷贝整个字符串,同时将'\0'追加到dest。但这又与strcmp()的作用没有什么两样

你可能感兴趣的:(linux,c/c++函数)