linux C函数库参考

合集下载

linux获取文件大小的函数

linux获取文件大小的函数

linux获取⽂件⼤⼩的函数C语⾔fstat()函数:由⽂件描述词取得⽂件状态头⽂件:#include <sys/stat.h> #include <unistd.h>定义函数:int fstat(int fildes, struct stat *buf);函数说明:fstat()⽤来将参数fildes 所指的⽂件状态, 复制到参数buf 所指的结构中(struct stat).fstat()与stat()作⽤完全相同, 不同处在于fstat()传⼊的参数为已打开的⽂件描述词. 详细内容请参考stat().返回值:执⾏成功则返回0, 失败返回-1, 错误代码存于errno.范例#include <sys/stat.h>#include <unistd.h>#include <fcntk.h>main(){struct stat buf;int fd;fd = open("/etc/passwd", O_RDONLY);fstat(fd, &buf);printf("/etc/passwd file size +%d\n ", buf.st_size);}执⾏:/etc/passwd file size = 705C语⾔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 ⽂件的设备编号ino_t st_ino; //inode ⽂件的i-nodemode_t st_mode; //protection ⽂件的类型和存取的权限nlink_t st_nlink; //number of hard links 连到该⽂件的硬连接数⽬, 刚建⽴的⽂件值为1.uid_t st_uid; //user ID of owner ⽂件所有者的⽤户识别码gid_t st_gid; //group ID of owner ⽂件所有者的组识别码dev_t st_rdev; //device type 若此⽂件为装置设备⽂件, 则为其设备编号off_t st_size; //total size, in bytes ⽂件⼤⼩, 以字节计算unsigned long st_blksize; //blocksize for filesystem I/O ⽂件系统的I/O 缓冲区⼤⼩.unsigned long st_blocks; //number of blocks allocated 占⽤⽂件区块的个数, 每⼀区块⼤⼩为512 个字节.time_t st_atime; //time of lastaccess ⽂件最近⼀次被存取或被执⾏的时间, ⼀般只有在⽤mknod、utime、read、write 与tructate 时改变.time_t st_mtime; //time of last modification ⽂件最后⼀次被修改的时间, ⼀般只有在⽤mknod、utime 和write 时才会改变 time_t st_ctime; //time of last change i-node 最近⼀次被更改的时间, 此参数会在⽂件所有者、组、权限被更改时更新};先前所描述的st_mode 则定义了下列数种情况:1、S_IFMT 0170000 ⽂件类型的位遮罩2、S_IFSOCK 0140000 scoket3、S_IFLNK 0120000 符号连接4、S_IFREG 0100000 ⼀般⽂件5、S_IFBLK 0060000 区块装置6、S_IFDIR 0040000 ⽬录7、S_IFCHR 0020000 字符装置8、S_IFIFO 0010000 先进先出9、S_ISUID 04000 ⽂件的 (set user-id on execution)位10、S_ISGID 02000 ⽂件的 (set group-id on execution)位11、S_ISVTX 01000 ⽂件的sticky 位12、S_IRUSR (S_IREAD) 00400 ⽂件所有者具可读取权限13、S_IWUSR (S_IWRITE)00200 ⽂件所有者具可写⼊权限14、S_IXUSR (S_IEXEC) 00100 ⽂件所有者具可执⾏权限15、S_IRGRP 00040 ⽤户组具可读取权限16、S_IWGRP 00020 ⽤户组具可写⼊权限17、S_IXGRP 00010 ⽤户组具可执⾏权限18、S_IROTH 00004 其他⽤户具可读取权限19、S_IWOTH 00002 其他⽤户具可写⼊权限20、S_IXOTH 00001 其他⽤户具可执⾏权限上述的⽂件类型在 POSIX 中定义了检查这些类型的宏定义21、S_ISLNK (st_mode) 判断是否为符号连接22、S_ISREG (st_mode) 是否为⼀般⽂件23、S_ISDIR (st_mode) 是否为⽬录24、S_ISCHR (st_mode) 是否为字符装置⽂件25、S_ISBLK (s3e) 是否为先进先出26、S_ISSOCK (st_mode) 是否为socket 若⼀⽬录具有sticky 位 (S_ISVTX), 则表⽰在此⽬录下的⽂件只能被该⽂件所有者、此⽬录所有者或root 来删除或改名.返回值:执⾏成功则返回0,失败返回-1,错误代码存于errno。

第7章 Linux常用C函数

第7章 Linux常用C函数

查找字符串
#include <string.h> int strstr(const char *haystack, const char *needle);
分割字符串
#include <string.h> char *strtok(const char *s, const char *delim);
线性搜索
#include <stdlib.h> void *lfind(const void *key, const void *void base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); void *lsearch(const void *key, const void *void base, size_t nmemb, size_t size, int (*compar)(const void *, const void lt;string.h> char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t n);
拷贝字符串,目标字符串地址在堆空间申请
7.4 数学计算操作
取绝对值
#include <stdlib.h> int abs(int j); #include <math.h> double fabs(double x);
取整操作
#include <math.h> double ceil(double x); double floor(double x);

归纳整理Linux下C语言常用的库函数----文件操作

归纳整理Linux下C语言常用的库函数----文件操作

归纳整理Linux下C语⾔常⽤的库函数----⽂件操作在没有IDE的时候,记住⼀些常⽤的库函数的函数名、参数、基本⽤法及注意事项是很有必要的。

参照Linux_C_HS.chm的⽬录,我⼤致将常⽤的函数分为⼀下⼏类:1. 内存及字符串控制及操作2. 字符串转换3. 字符测试4. ⽂件操作5. 时间⽇期6. 常⽤数学函数7. ⽂件内容操作8. ⽂件权限控制9. 进程操作10. 线程操作11. Socket操作12. 信号处理13. 数据结构及算法这次主要总结的是上⾯⿊⾊部分,关于⽂件操作的函数。

系统调⽤归类** 函数名⽤法备注**1. int open(const char *pathname, int flags); open and possibly create a file or device flags 必须包含O_RDONLY, O_WRONLY, or O_RDWR中的任何⼀个**2. int open(const char *pathname, int flags, mode_t mode); UP mode只是在flags中包含O_CREAT时才有效**3. int fsync(int fd); synchronize a file's in-core state with storage device 写完数据close前必须先同步,以防意外**4. off_t lseek(int fd, off_t offset, int whence); 定位⽂件位置第三个参数可以为SEEK_SET SEEK_CUR SEEK_END**5. ssize_t read(int fildes, void *buf, size_t nbyte); UP ⽂件位置会随读取的字节数移动**6. ssize_t write(int fildes, const void *buf, size_t nbyte); UP UP**7. int close(int fd); UP UP**8. void *mmap(void *addr, size_t length, int prot, int flags, 内存映射先⽤fstat得到⽂件⼤⼩,然后使⽤该函数将⽂件内容映射到内存中,然后就可以int fd, off_t offset); 直接调⽤字符串函数操作。

Linux常用C函数open和read以及write的使用说明

Linux常用C函数open和read以及write的使用说明

Linux‎常用C函数‎o pen和‎r ead以‎及writ‎e的使用说‎明2008-03-19 13:56open(打开文件)相关函数read,write‎,fcntl‎,close‎,link,stat,umask‎,unlin‎k,fopen‎表头文件 #inclu‎d e<sys/types‎.h>#inclu‎d e<sys/stat.h>#inclu‎d e<fcntl‎.h>定义函数 int open( const‎char * pathn‎a me, int flags‎);int open( const‎char * pathn‎a me,int flags‎, mode_‎t mode);函数说明参数pat‎h name‎指向欲打开‎的文件路径‎字符串。

下列是参数‎f lags‎所能使用的‎旗标:O_RDO‎N LY 以只读方式‎打开文件O_WRO‎N LY 以只写方式‎打开文件O_RDW‎R以可读写方‎式打开文件‎。

上述三种旗‎标是互斥的‎,也就是不可‎同时使用,但可与下列‎的旗标利用‎O R(|)运算符组合‎。

O_CRE‎A T 若欲打开的‎文件不存在‎则自动建立‎该文件。

O_EXC‎L如果O_C‎R EAT 也被设置,此指令会去‎检查文件是‎否存在。

文件若不存‎在则建立该‎文件,否则将导致‎打开文件错‎误。

此外,若O_CR‎E AT与O‎_EXCL‎同时设置,并且欲打开‎的文件为符‎号连接,则会打开文‎件失败。

O_NOC‎T TY 如果欲打开‎的文件为终‎端机设备时‎,则不会将该‎终端机当成‎进程控制终‎端机。

O_TRU‎N C 若文件存在‎并且以可写‎的方式打开‎时,此旗标会令‎文件长度清‎为0,而原来存于‎该文件的资‎料也会消失‎。

O_APP‎E ND 当读写文件‎时会从文件‎尾开始移动‎,也就是所写‎入的数据会‎以附加的方‎式加入到文‎件后面。

LinuxC函数库大全

LinuxC函数库大全

LinuxC函数库⼤全(1)字符测试函数isalnum(测试字符是否为英⽂字母或数字)isalpha(测试字符是否为英⽂字母)isascii(测试字符是否为ASCII码字符)isblank(测试字符是否为空格字符)iscntrl(测试字符是否为ASCII码的控制字符)isdigit(测试字符是否为阿拉伯数字)isgraph(测试字符是否为可打印字符)islower(测试字符是否为⼩写英⽂字母)isprint(测试字符是否为可打印字符)isspace(测试字符是否为空格字符)ispunct(测试字符是否为标点符号或特殊符号)isupper(测试字符是否为⼤写英⽂字母)isxdigit(测试字符是否为16进制数字)(2)数据转换函数atof(将字符串转换成浮点型数)1atoi(将字符串转换成整型数)atol(将字符串转换成长整型数)ecvt(将浮点型数转换成字符串,19取四舍五⼊)fcvt(将浮点型数转换为字符串,20取四舍五⼊)gcvt(将浮点型数转换为字符串,21取四舍五⼊)(3)内存配置函数alloca(配置内存空间)brk(改变数据字节的范围)calloc(配置内存空间)free(释放原先配置的内存)getpagesize(取得内存分页⼤⼩)malloc(配置内存空间)mmap(建⽴内存映射)munmap(解除内存映射)realloc(更改⼰配置的内存空间)sbrk(增加程序可⽤的数据空间)(4)时间函数asctime(将时间和⽇期以字符串格式表⽰)clock(取得进程占⽤CPU的⼤约时间)ctime(将时间和⽇期以字符串格式表⽰)difftime(计算时间差距)ftime(取得⽬前的时间和⽇期)gettimeofday(取得⽬前的时间)gmtime(取得⽬前的时间和⽇期)localtime(取得当地⽬前的时间和⽇期)mktime(将时间结构数据转换成经过的秒数)settimeofday(设置⽬前的时间)strftime(格式化⽇期和时间)time(取得⽬前的时间)tzset(设置时区以供时间转换)(5)字符串处理函数bcmp(⽐较内存内容)bcopy(拷贝内存内容)bzero(将⼀段内存内容全清为零)ffs(在⼀整型数中查找第⼀个值为真的位)memchr(在某⼀内存范围中查找⼀特定字符) memcmp(⽐较内存内容)memcpy(拷贝内存内容)memfrob(对内存区域编码)memmove(拷贝内存内容)memset(将⼀段内存空间填⼊某值)rindex(查找字符串中最后⼀个出现的指定字符) strcasecmp(忽略⼤⼩写⽐较字符串)strcat(连接两字符串)strchr(查找字符串中第⼀个出现的指定字符)strcmp(⽐较字符串)strcoll(采⽤⽬前区域的字符排列次序来⽐较字符串) strcpy(拷贝字符串)strcspn(返回字符串中连续不含指定字符串内容的字符数) strdup(复制字符串)strfry(随机重组字符串内的字符)strlen(返回字符串长度)strncasecmp(忽略⼤⼩写⽐较字符串)strncat(连接两字符串)strncmp(⽐较字符串)strncpy(拷贝字符串)strpbrk(查找字符串中第⼀个出现的指定字符)strrchr(查找字符串中最后⼀个出现的指定字符)strspn(返回字符串中连续不合指定字符串内容的字符数) strstr(在⼀字符串中查找指定的字符串)strtok(分割字符串)(6)数学计算函数abs(计算整型数的绝对值)acos(取反余弦函数值)asin(取反正弦函数值)atan(取反正切函数值)atan2(取得反正切函数值)ceil(取不⼩于参数的最⼩整型数)cos(取余弦函数值)cosh(取双曲线余弦函数值)div(取得两整型数相除后的商及余数)exp(计算指数)fabs(计算浮点型数的绝对值)frexp(将浮点型数分为底数与指数)hypot(计算直⾓三⾓形斜边长)labs(计算长整型数的绝对值)ldexp(计算2的次⽅值)ldiv(取得两长整数相除后的商及余数)log(计算以e为底的对数值)log10(计算以10为底的对数值)modf(将浮点型数分解成整数与⼩数)pow(计算次⽅值)sin(取正弦函数值)sinh(取双曲线正弦函数值)sqrt(计算平⽅根值)tan(取正切函数值)tanh(取双曲线正切函数值)(7)⽤户和组函数cuserid(取得⽤户帐号名称)endgrent(关闭组⽂件)endpwent(关闭密码⽂件)fgetgrent(从指定的⽂件来读取组格式) fgetpwent(从指定的⽂件来读取密码格式) getegid(取得有效的组识别码)geteuid(取得有效的⽤户识别码)getgid(取得真实的组识别码)getgrent(从组⽂件⽂件中取得帐号的数据) getgrgid(从组⽂件中取得指定gid的数据) getgrnan(从组⽂件中取得指定组的数据) getgroups(取得组代码)getlogin(取得登录的⽤户帐号名称)getpw(取得指定⽤户的密码⽂件数据) getpwent(从密码⽂件中取得帐号的数据) getpwnam(从密码⽂件中取得指定帐号的数据) getpwuid(从密码⽂件中取得指定uid的数据) getuid(取得真实的⽤户识别码)getutent(从utmp⽂件中取得帐号登录数据) getutid(从utmp⽂件中查找特定的记录) getutline(从utmp⽂件中查找特定的记录) initgroups(初始化组清单)logwtmp(将⼀登录数据记录到wtmp⽂件) pututline(将utmp记录写⼊⽂件)setegid(设置有效的组识别码)seteuid(设置有效的⽤户识别码)setfsgid(设置⽂件系统的组识别码)setfsuid(设置⽂件系统的⽤户识别码)setgid(设置真实的组识别码)setgrent(从头读取组⽂件中的组数据) setgroups(设置组代码)setpwent(从头读取密码⽂件中的帐号数据) setregid(设置真实及有效的组识别码) setreuid(设置真实及有效的⽤户识别码) setuid(设置真实的⽤户识别码)setutent(从头读取utmp/⽂件中的登录数据) updwtmp(将⼀登录数据记录到wtmp⽂件) utmpname(设置utmp⽂件路径)(8)数据加密函数crypt(将密码或数据编码)getpass(取得⼀密码输⼊)(9)数据结构函数bsearch(⼆元搜索)hcreate(建⽴哈希表)hdestory(删除哈希表)hsearch(哈希表搜索)insque(加⼊⼀项⽬⾄队列中)lfind(线性搜索)lsearch(线性搜索)qsort(利⽤快速排序法排列数组)rremque(从队列中删除⼀项⽬)tdelete(从⼆叉树中删除数据)tfind(搜索⼆叉树)tsearch(⼆叉树)twalk(⾛访⼆叉树)(10)随机数函数drand48(产⽣⼀个正的浮点型随机数)erand48(产⽣⼀个正的浮点型随机数)jrand48(产⽣⼀个长整型数随机数)lcong48(设置48位运算的随机数种⼦) lrand48(产⽣⼀个正的长整型随机数) mrand48(产⽣⼀个长整型随机数)nrand48(产⽣⼀个正的长整型随机数) rand(产⽣随机数)random(产⽣随机数)seed48(设置48位运算的随机数种⼦) setstate(建⽴随机数状态数组)srand(设置随机数种⼦)srand48(设置48位运算的随机数种⼦) srandom(设置随机数种⼦)(11)初级I/O函数close(关闭⽂件)creat(建⽴⽂件)dup(复制⽂件描述词)dup2(复制⽂件描述词)fcntl(⽂件描述词操作)flock(锁定⽂件或解除锁定)fsync(将缓冲区数据写回磁盘)lseek(移动⽂件的读写位置)mkstemp(建⽴唯⼀的临时⽂件)open(打开⽂件)read(由⼰打开的⽂件读取数据)sync(将缓冲区数据写回磁盘)write(将数据写⼊已打开的⽂件内) (12)标准I/O函数clearerr(清除⽂件流的错误旗标)fclose(关闭⽂件)fdopen(将⽂件描述词转为⽂件指针)feof(检查⽂件流是否读到了⽂件尾) fflush(更新缓冲区)fgetc(由⽂件中读取⼀个字符)fgetpos(取得⽂件流的读取位置)fgets(由⽂件中读取⼀字符串)fileno(返回⽂件流所使⽤的⽂件描述词) fopen(打开⽂件)fputc(将⼀指定字符写⼊⽂件流中)fputs(将⼀指定的字符串写⼊⽂件内) fread(从⽂件流读取数据)freopen(打开⽂件)fseek(移动⽂件流的读写位置)fsetpos(移动⽂件流的读写位置)ftell(取得⽂件流的读取位置)fwrite(将数据写⾄⽂件流)getc(由⽂件中读取⼀个字符)getchar(由标准输⼊设备内读进⼀字符) gets(由标准输⼊设备内读进⼀字符串) mktemp(产⽣唯⼀的临时⽂件⽂件名) putc(将⼀指定字符写⼊⽂件中)putchar(将指定的字符写到标准输出设备) puts(将指定的字符串写到标准输出设备) rewind(重设⽂件流的读写位置为⽂件开头) setbuf(设置⽂件流的缓冲区)setbuffer(设置⽂件流的缓冲区) setlinebuf(设置⽂件流为线性缓冲区)tmpfile(建⽴临时⽂件)ungetc(将⼀指定字符写回⽂件流中)(13)进程及流程控制abort(以异常⽅式结束进程)assert(若测试的条件不成⽴则终⽌进程)atexit(设置程序正常结束前调⽤的函数)execl(执⾏⽂件)execle(执⾏⽂件)execlp(从PATH环境变量中查找⽂件并执⾏) execv(执⾏⽂件)execve(执⾏⽂件)execvp(执⾏⽂件)exit(正常结束进程)_exit(结束进程执⾏)fork(建⽴⼀个新的进程)getpgid(取得进程组识别码)getpgrp(取得进程组识别码)getpid(取得进程识别码)getppid(取得⽗进程的进程识别码)getpriority(取得程序进程执⾏优先权)longjmp(跳转到原先setjmp保存的堆栈环境) nice(改变进程优先顺序)on_exit(设置程序正常结束前调⽤的函数) ptrace(进程追踪)setjmp(保存⽬前堆栈环境)setpgid(设置进程组识别码)setpgrp(设置进程组识别码)setpriority(设置程序进程执⾏优先权) siglongjmp(跳转到原先sigsetjmp保存的堆栈环境) sigsetjmp(保存⽬前堆栈环境)system(执⾏shell命令)wait(等待⼦进程中断或结束)waitpid(等待⼦进程中断或结束)(14)格式化输⼈输出函数fprintf(格式化输出数据⾄⽂件)fscanf(格式化字符串输⼊)printf(格式化输出数据)scanf(格式化字符串输⼊)snprintf(格式化字符串复制)sprintf(格式化字符串复制)sscanf(格式化字符串输⼊)vfprintf(格式化输出数据⾄⽂件)vfcanf(格式化字符串输⼊)vprintf(格式化输出数据)vscanf(格式化字符串输⼊)vsnprintf(格式化字符串复制)vsprintf(格式化字符串复制)vsscanf(格式化字符串输⼊)(15)⽂件及⽬录函数access(判断是否具有存取⽂件的权限) alphasort(依字母顺序排序⽬录结构)chdir(改变当前的⼯作⽬录)chmod(改变⽂件的权限)chown(改变⽂件的所有者)chroot(改变根⽬录)fchdir(改变当前的⼯作⽬录)fchmod(改变⽂件的权限)fchown(改变⽂件的所有者)fstat(由⽂件描述词取得⽂件状态)ftruncate(改变⽂件⼤⼩)ftw(遍历⽬录树)get_current_dir_name(取得当前的⼯作⽬录) getcwd(取得当前的⼯作⽬录)getwd(取得当前的⼯作⽬录)lchown(改变⽂件的所有者)link(建⽴⽂件连接)lstat(由⽂件描述词取得⽂件状态)nftw(遍历⽬录树)opendir(打开⽬录)readdir(读取⽬录)readlink(取得符号连接所指的⽂件)realpath(将相对⽬录路径转换成绝对路径) remove(删除⽂件)rename(更改⽂件名称或位置)rewinddir(重设读取⽬录的位置为开头位置) scandir(读取特定的⽬录数据)seekdir(设置下回读取⽬录的位置)stat(取得⽂件状态)symlink(建⽴⽂件符号连接)telldir(取得⽬录流的读取位置)truncate(改变⽂件⼤⼩)umask(设置建⽴新⽂件时的权限遮罩)unlink(删除⽂件)utime(修改⽂件的存取时间和更改时间)utimes(修改⽂件的存取时间和更改时间)(16)信号函数alarm(设置信号传送闹钟)kill(传送信号给指定的进程)pause(让进程暂停直到信号出现)psignal(列出信号描述和指定字符串)raise(传送信号给⽬前的进程)sigaction(查询或设置信号处理⽅式)sigaddset(增加⼀个信号⾄信号集)sigdelset(从信号集⾥删除⼀个信号) sigemptyset(初始化信号集)sigfillset(将所有信号加⼊⾄信号集) sigismember(测试某个信号是否已加⼊⾄信号集⾥) signal(设置信号处理⽅式)sigpause(暂停直到信号到来)sigpending(查询被搁置的信号)sigprocmask(查询或设置信号遮罩)sigsuspend(暂停直到信号到来)sleep(让进程暂停执⾏⼀段时间)isdigit(测试字符是否为阿拉伯数字)(17)错误处理函数ferror(检查⽂件流是否有错误发⽣)perror(打印出错误原因信息字符串)streror(返回错误原因的描述字符串)(18)管道相关函数mkfifo(建⽴具名管道)popen(建⽴管道I/O)(19)Soket相关函数accept(接受socket连线)bind(对socket定位)connect(建⽴socket连线)endprotoent(结束⽹络协议数据的读取) endservent(结束⽹络服务数据的读取) gethostbyaddr(由IP地址取得⽹络数据) gethostbyname(由主机名称取得⽹络数据) getprotobyname(由⽹络协议名称取得协议数据) getprotobynumber(由⽹络协议编号取得协议数据) getprotoent(取得⽹络协议数据) getservbyname(依名称取得⽹络服务的数据) getservbyport(依port号码取得⽹络服务的数据) getservent(取得主机⽹络服务的数据) getsockopt(取得socket状态)herror(打印出⽹络错误原因信息字符串) hstrerror(返回⽹络错误原因的描述字符串)htonl(将32位主机字符顺序转换成⽹络字符顺序) htons(将16位主机字符顺序转换成⽹络字符顺序) inet_addr(将⽹络地址转成⽹络⼆进制的数字) inet_aton(将⽹络地址转成⽹络⼆进制的数字) inet_ntoa(将⽹络⼆进制的数字转换成⽹络地址) listen(等待连接)ntohl(将32位⽹络字符顺序转换成主机字符顺序) ntohs(将16位⽹络字符顺序转换成主机字符顺序) recv(经socket接收数据)recvfrom(经socket接收数据)recvmsg(经socket接收数据)send(经socket传送数据)sendmsg(经socket传送数据)sendto(经socket传送数据)setprotoent(打开⽹络协议的数据⽂件) setservent(打开主机⽹络服务的数据⽂件) setsockopt(设置socket状态)shutdown(终⽌socket通信)socket(建⽴⼀个socket通信)(20)进程通信(IPC)函数ftok(将⽂件路径和计划代号转为SystemcVIPCkey) msgctl(控制信息队列的运作)msgget(建⽴信息队列)msgrcv(从信息队列读取信息)msgsnd(将信息送⼊信息队列)semctl(控制信号队列的操作)semget(配置信号队列)semop(信号处理)shmat(attach共享内存)shmctl(控制共享内存的操作)shmdt(detach共享内存)shmget(配置共享内存)(21)记录函数closelog(关闭信息记录)openlog(准备做信息记录)syslog(将信息记录⾄系统⽇志⽂件)getenv(取得环境变量内容)putenv(改变或增加环境变量)setenv(改变或增加环境变量) unsetenv(清除环境变量内容)(23)正则表达式regcomp(编译正则表达式字符串) regerror(取得正则搜索的错误原因) regexec(进⾏正则表达式的搜索) regfree(释放正则表达式使⽤的内存) (24)动态函数dlclose(关闭动态函数库⽂件)dlerror(动态函数错误处理)dlopen(打开动态函数库⽂件)dlsym(从共享对象中搜索动态函数) (25)其他函数getopt(分析命令⾏参数)isatty(判断⽂件描述词是否是为终端机) select(I/O多⼯机制)ttyname(返回⼀终端机名称)。

linux C语言常用函数大全

linux C语言常用函数大全

1: 系统调用:读一个文件函数原型:ssize_t read(int fd, void *buf, size_t size) ;头文件:#include参数:略返回值:1> = 0 :达到文件结尾3> > 0 :返回读到的实际字节数备注:略2:系统调用:写入一个文件函数原型:ssize_t write(int fd, void *buf, size_t size) ;头文件:#include参数:略返回值:1> > 0 :返回写入的实际字节数目----------------------------------注意:当返回值不等于size时,则出现I/O错误备注:略3:系统调用:返回本进程的ID函数原型:pid_t getpid() ;头文件:#include参数:无返回值:1> > 0 :返回本进程ID2>4:系统调用:返回本进程的组ID函数原型:gid_t getgid() ;头文件:#include参数:无返回值:1> > 0 :返回组ID5:系统调用:复制一个文件描述符(一个参数)函数原型:int dup(int fd) ;头文件:#include参数:略返回值:1> >= 0 :返回一个文件描述符备注:此函数的结果就是两个文件符指向一个相同的文件6:系统调用:复制一个文件描述符(两个参数)函数原型:int dup(int fd1, int fd2) ;头文件:#include参数:fd1 :已知的fdfd2 :要复制到的fd返回值:1> >=0 :调用成功备注:此函数的分成三种情况:1> 若fd2已打开,且fd2 != fd1,则先将fd2关闭2> 若fd2已打开,且fd2 == fd1,则直接返回3> 若fd2没有打开,则直接复制7:系统调用:获取文件属性的三个函数函数原型:int stat(const char *pathname, stat *buf) ;int fstat(int fd, stat *buf) ;int lstat(int fd, stat *buf) ;头文件:#include#include参数:略返回值:如果返回负数,则调用失败备注:当操作的文件是个链接文件时1> stat和fstat返回的是链接指向文件的属性2> lstat返回的是链接文件本身的属性8:系统调用:判断文件类型的几个宏(Question:参数) 头文件:(Question)普通文件:S_ISREG()目录文件:S_ISDIR()链接文件:S_ISLNK()块设备:S_ISBLK()字符设备:S_ISCHR()管道:S_ISFIFO()SOCKET :S_ISSOCK()9:系统调用:测试文件存取模式函数原型:int access(const char *pathname, int mode) 头文件:#include#include#include参数:mode的取值情况:---------------1> 存在:F_OK (文件是否存在)2> 可读:R_OK3> 可写:W_OK4> 执行:X_OK返回值:如果失败,返回一个负数备注:10:系统命令:置位设置-用户-ID位chmod u+s file11:系统结构:文件存储权限字S_ISUID 设置-用户-IDS_ISGID 用户-组-IDS_ISIVX 粘住位S_IRUSR 用户相关S_IWUSRS_IXUSRS_IRGRP 组相关S_IWGRPS_IXGRPS_IROTH 其他用户相关S_IWOTHS_IXOTH12:系统函数:屏蔽标记函数函数原型:mode_t umask(mode_t masks) ;头文件:#include参数:要屏蔽的存储方式字(mode_t)返回值:返回原来的屏蔽方式字备注:1> 此函数如果出错,则不会返回2> 这是UNIX中出错不会返回的仅有的几个函数之一13:系统调用:改动文件存取模式函数原型:int chmod(const char *pathname, mode_t mode) ;int fchmode(int fd, mode_t mode) ;头文件:#include#include参数:略返回值:如果出错,则返回一个负数备注:fchmod能设置一个已打开文件的存储访问权限14:系统调用:截短文件的函数函数原型:int truncate(const char *pathname, off_t length) ;int ftruncate(int fd, off_t length) ;头文件:#include#include参数:off_t (截短到该长度)返回值:如果失败,则返回一个负数备注:1> length可正可负2> 可能出现“文件空洞”15:标准函数:设置流的缓冲类型函数原型:int setvbuf(FILE *fstream, void *buf, int mode, size_t size 头文件:#include参数:buf :if buf==NULL,则由系统来分配缓存,叫做系统缓存if buf!=NULL,则来使用分配的缓存,叫做用户缓存size:分配的用户缓存大小mode:_IOFBF :I/O全缓存_IOLBF :I/O行缓存_IONBF :I/O不缓存参数:如果失败,则返回一个负数16:标准函数:缓冲流函数原型:int fflush(FILE *fstream) ;头文件:#include参数:if fstream == NULL,则强制刷新全部流if fstream != NULL,则刷新特定流返回值:如果失败,则返回一个负数17:标准函数:打开文件的三个函数函数原型:FILE* fopen(const char *pathname, char *mode) ;FILE* fropen(const char *pathname, char *mode) ;FILE* fdopen(int fd, char *mode) ;头文件:#include参数:略返回值:略备注:1> fopen :路径&#61664; FILE*2> fropen :重新打开一个文件3> fdopen :把FILE* 和一个fd联系起来I/O的几种type类型1> r :为读而打开2> r+ :为读和写而打开3> w :使文件长度称为0,或为写而创建文件4> w+ :使文件长度成为0,为读和写而打开5> a :添加,为在文件尾写而打开或为了写而创建文件6> a+ :为在文件尾读和写而打开或创建19:标准函数:关闭一个文件流函数原型:int fclose(FILE* fstream) ;头文件:#include参数:略返回值:如果出错,返回一个负数备注:系统在关闭一个文件时,会自动刷新该文件相关的流1> 输入数据:全部被抛弃2> 输出数据:全部被刷新20:标准函数:读取一个字符(三个)函数原型:int getchar() ;int getc(FILE *fstream) ;int fgetc(FILE *fstream) ;头文件:#include参数:略返回值:1> EOF :文件结束2> >=0 :读取的字符的ASCII码3> getc和fgetc的差别getc是个宏2> 返回值一定要用int类型,不是char类型3> 三个函数遇见文件结束或I/O错误时,都会返回负数,这个时候应该用两个函数来判断是那种情况:feof(FILE *fstream) ; // 是否文件结尾?ferror(FILE *fstream) ; // 是否出现错误?21:标准函数:测试是否到达一个文件流的结束函数原型:int feof(FILE *fstream) ;头文件:#include参数:略返回值:略22:标准函数:测试一个文件流是否出现错误函数原型:int ferror(FILE *fstream) ;头文件:#include参数:略返回值:略23:标准函数:字符回送函数函数原型:int ungetc(int c, FILE *fsteam) ;头文件:#include参数:略返回值:1> 如果回送成功,则返回字符c2> 如果失败,则返回一个负数24:标准函数:字符输出函数函数原型:int putchar(int c) ;int putc(int c, FILE *fstream) ;int fputc(int c, FILE *fstream) ;头文件:#include参数:略返回值:如果失败,则返回一个负数备注:其他相关事项和put类型相同25:标准函数:每次一行I/O的输入函数函数原型:int fgets(const char *buf, size_t size, FILE *fstream) ;头文件:#include参数:略返回值:1> 如果成功,返回实际写入的字节数2> 如果返回值和size不相等,则出现错误26:标准函数:每次一行I/O的输出函数函数原型:int fputs(const char *buf, FILE *fstream) ;头文件:#include参数:略返回值:1> >=0 :返回实际读取的字节数2> fgets函数中,如果缓存大小是size,则最多能存放n-1个字符(包括‘\n’符号)2> fputs函数中,系统推荐在buf[size-2]字符=’\n’,不过并不强制这样做27:标准函数:读二进制文件或数据类型函数原型:int fread(void *buf, size_t objsize, int objnum, FILE *fs头文件:#include参数:buf :缓存首地址objsize :一个字节所占的字节数目objnum :对象的数目返回值:1> >=0 :返回读到的对象数目2>28:标准函数:写二进制文件或数据类型函数原型:int fwrite(const void *buf,size_t size, int num, FILE *f)头文件:#include参数:buf :缓存首地址objsize :一个字节所占的字节数目num :要写入的字节数目返回值:如果返回值和num不相等,那么就出现了错误备注:fread和fwrite函数是有局限性的,因为各种操作系统同一种类型所占的空间大小也是有差别的29:标准函数:定位流函数函数原型:int fseek(FILE *fstream, long offset, int whence) ;头文件:#include参数:offset :偏移量whence :从什么地方开始(SET,END,CURSOR)返回值:如果定位失败,则返回一个负数30:标准函数:重置文件流函数原型:int rewind(FILE *fstream)头文件:#include参数:略返回值:略31:标准函数:建立临时文件(两个)函数原型:char* tmpnam(char *str) ;FILE* tmpfile(void) ;头文件:#include参数:if (str == NULL)路径名会存储在str中if (str != NULL)路径名存储在系统的静态空间里面返回值:tmpnam :返回临时文件的路径名tmpfile :返回临时文件的指针。

学会用Linux C文件读写函数

学会用Linux C文件读写函数

学会用Linux C文件读写函数C标准库提供的用于读写文件的函数非常多,大多数函数都在stdio.h中声明。

fread/fwrite,fgets/fputs,fgetchar/fputchar,fprintf/fscanf.。

..。

..。

..。

..这些函数原型声明都在stdio.h中,如下:size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);int fgetc(FILE *stream);char *fgets(char *s,int size,FILE *stream);int getc(FILE *stream);int getchar(void);int ungetc(int c,FILE *stream);无论是写入文件还是从文件流流中读取,都要先打开文件,完成后还要将打开的文件关闭。

为了防止指针变成野指针,还应将文件指针指向NULL。

FILE *fopen(const char *pathname,const char *mode);FILE *fdopen(int fd,const char *mode);FILE *freopen(const char *pathname,const char *mode,FILE *stream);fopen函数的安全版本是fopen_s(FILE *stream,char *filename,char *mode),使用之前要将宏fileutil.h#ifndef __FILEUTIL_H#define __FILEUTIL_H#includeFILE *open_file(const char *file,const char *mode);void read0(const char *file);void read1(const char *file);void read2(const char *file);。

Linux下常用C语言字符串操作函数

Linux下常用C语言字符串操作函数

Linux下常用C语言字符串操作函数stroul,strdupsnprintf()atioC中常用字符串操作函数#include <string.h>size_t strlen(const char *s) 测量字符串长度s的实际长度。

例如s[20]="abc",那么strlen(s)的结果是3,而不是20.这就是实际长度char *strcat(const char *s1, const *s2) 将字符串s2连接到s1的尾部。

从s1的\0开始。

int strcmp(const *s1,const *s2) 比较s1和s2。

s1 = s2的时候返回值=0s1 < s2的时候返回至<0s1 > s2的时候返回值>0char *strchr(const char *s, char c); 返回s中首次出现C的位置的指针。

如果s中不存在c则返回NULLchar *strrchr(const char *s, char c );返回s中最后一次出现c的位置的指针。

如果没有,则返回0char *strstr(const char *haystack, const char *needle);返回haystack中needle字符串首次出现的位置的指针(不比较结束符NULL)。

若果没找到则返回NULL限定长度的比较,拷贝和追加函数int strncmp(char *s1, const char *s2, size_t n);(这些都是针对字符串的前n个字符来操作的)char *strncpy(char *dest, const char *src, size_t n);char *strncat(char *dest, const char *src, size_t n);char *strdup(char *s)返回指向被复制的字符串的指针,所需空间由malloc()分配而且需要free释放空间int atoi(const char *nptr);将字符串转换成整型数atoi()会扫描参数nptr字符串,跳过前面的空格,直到遇上数字或者正负号才开始装换,而再遇到非数字或者非字符串结束时('\0')其实ato是一族将字符转换为数的函数,atof,atol:他们分别是将字符串转换成浮点型,长整型数。

c语言常用库函数

c语言常用库函数

c语言常用库函数c 语言常用库函数包括:1. 标准库函数:这些函数在程序的源文件中可以直接使用,不需要额外的安装,最常用的有 printf() , scanf() , getchar() , putchar() , malloc () , calloc () , realloc () , free () 、sprintf() , sscanf () 等。

2. 文件读写:文件读写是编程中最常用到的函数之一,常用的是fopen() , fclose() , fread() , fwrite() , fseek () , ftell() 等。

3. 字符串处理:字符串处理也是个重要块,常用的有 strlen() , strcpy() , strcat() , strcmp() , strncmp() , strchr() ,strrchr() , strstr() , strspn() , strpbrk() , strtok() 等。

4. 内存操作:内存操作相关的常用函数有 memset() ,memcpy() , memmove() , memcmp() 等。

5. 数学计算:c 语言中的数学计算函数有 abs() , fabs() ,floor() , ceil() , log() , exp() , pow() , sin() , cos() ,tan() , asin() , acos() , atan() 等。

6. 时间日期:相关的函数有 time() , clock() , localtime() , gmtime() , mktime() 等。

7. 其它:还有一些常用的函数如 qsort() , rand() , srand() , system() 等。

linux c函数总结

linux c函数总结

linux c 函数总结命令【功能说明】:【头文件】:【详细介绍】:【函数原型】:示例练习范例1:【源程序】:【编译命令】:文件IOclose【功能说明】:linux环境下用close系统调用关闭一个打开的文件【头文件】:#include <unistd.h>【详细介绍】:与open配对使用【函数原型】:int close(int fd);【参数说明】:示例练习范例1:列出信号名称列表【源程序】:【编译命令】:【运行输出】:creat【功能说明】:【头文件】:#include<fcntl.h>【详细介绍】:Creat()相当于使用下列的调用方式调用open() open(const char * pathname ,(O_CREAT|O_WRONLY|O_TRUNC));【函数原型】:int creat(const char * pathname, mode_t mode);示例练习范例1:【源程序】:fcntl【功能说明】:根据文件描述词来操作文件的特性。

【头文件】:#include <fcntl.h>【详细介绍】:int fcntl(int fd, int cmd);int fcntl(int fd, int cmd, long arg);int fcntl(int fd, int cmd, struct flock *lock); 【函数原型】:示例练习范例1:【编译命令】:【运行输出】:fsync【功能说明】:同步内存中指定已修改的文件数据到储存设备。

【头文件】:#include <unistd.h>【详细介绍】:【函数原型】:int fsync(int fd);示例练习范例1:【源程序】:ftruncate【功能说明】:【头文件】:#include<unistd.h>【详细介绍】:ftruncate()会将参数fd指定的文件大小改为参数length指定的大小。

linux c map 用法

linux c map 用法

linux c map 用法在Linux C中,Map是一个非常常用的数据结构。

它提供了一种键值对的映射关系,即可以根据特定的键获取对应的值。

C语言中没有内置的Map类型,但可以使用多种方法实现类似的功能。

下面是关于Linux C中Map的用法的相关参考内容。

1. 使用结构体数组一种常见的实现Map的方法是使用结构体数组。

结构体中有两个成员:键和值。

通过比较键的值,可以找到对应的值。

```ctypedef struct {int key;int value;} KeyValue;KeyValue map[CAPACITY]; // 定义Map的大小void insert(int key, int value) {// 在Map中插入键值对// 可以使用循环遍历结构体数组,查找键是否已经存在// 如果存在,更新对应的值,如果不存在,将新的键值对插入到结构体数组的最后}int get(int key) {// 根据给定的键获取对应的值// 可以使用循环遍历结构体数组,找到匹配的键值对,返回对应的值}void remove(int key) {// 根据给定的键删除键值对// 可以使用循环遍历结构体数组,找到匹配的键值对,将其删除并将后面的元素向前移动}```2. 使用哈希表另一种常见的实现Map的方法是使用哈希表。

哈希表通过哈希函数将给定的键转换成数组的索引,然后将键值对存储在数组中。

```ctypedef struct {int key;int value;} KeyValue;#define CAPACITY 100 // 定义哈希表的大小KeyValue map[CAPACITY];int hash(int key) {// 哈希函数,将给定的键转换成数组的索引}void insert(int key, int value) {// 在哈希表中插入键值对// 根据哈希函数将键转换成数组的索引,如果该索引已经被占用,可以使用开放地址法解决碰撞问题// 如果哈希表已满,可以考虑扩容}int get(int key) {// 根据给定的键获取对应的值// 根据哈希函数将键转换成数组的索引,如果存在,返回对应的值}void remove(int key) {// 根据给定的键删除键值对// 根据哈希函数将键转换成数组的索引,如果存在,将其删除}```3. 使用开源库除了自己实现Map,还可以使用开源库来实现Map的功能。

Linux常用C函数(文件操作篇)[方案]

Linux常用C函数(文件操作篇)[方案]

Linux 常用C函数(文件操作篇)close(关闭文件)open,fcntl,shutdown,unlink,fclose表头文件 #include<unistd.h>定义函数 int close(int fd);函数说明当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源。

参数fd为先前由open()或creat()所返回的文件描述词。

返回值若文件顺利关闭则返回0,发生错误时返回-1。

错误代码 EBADF 参数fd 非有效的文件描述词或该文件已关闭。

附加说明虽然在进程结束时,系统会自动关闭已打开的文件,但仍建议自行关闭文件,并确实检查返回值。

范例参考open()creat(建立文件)相关函数 read,write,fcntl,close,link,stat,umask,unlink,fopen表头文件 #include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>定义函数 int creat(const char * pathname, mode_tmode);函数说明参数pathname指向欲建立的文件路径字符串。

Creat()相当于使用下列的调用方式调用open()open(const char * pathname ,(O_CREAT|O_WRONLY|O_TRUNC));错误代码关于参数mode请参考open()函数。

返回值 creat()会返回新的文件描述词,若有错误发生则会返回-1,并把错误代码设给errno。

EEXIST 参数pathname所指的文件已存在。

EACCESS 参数pathname 所指定的文件不符合所要求测试的权限EROFS 欲打开写入权限的文件存在于只读文件系统内EFAULT 参数pathname 指针超出可存取的内存空间EINVAL 参数mode 不正确。

linux下的c库函数大全

linux下的c库函数大全

linux下的c库函数大全,虽然没有函数描述,但是最起码可以知道分类,就可以去man 了[table=95%][tr][td][font=FixedSys]Linux C函数库参考手册第1章字符测试函数isalnum(测试字符是否为英文字母或数字)isalpha(测试字符是否为英文字母)isascii(测试字符是否为ASCII码字符)isblank(测试字符是否为空格字符)iscntrl(测试字符是否为ASCII码的()控制字符)isdigit(测试字符是否为阿拉伯数字)isgraph(测试字符是否为可打印字符)islower(测试字符是否为小写英文字母)isprint(测试字符是否为可打印字符)isspace(测试字符是否为空格字符)ispunct(测试字符是否为标点符号或特殊符号)isupper(测试字符是否为大写英文字母)isxdigit(测试字符是否为16进制数字)第2章数据转换函数atof(将字符串转换成浮点型数)1atoi(将字符串转换成整型数)atol(将字符串转换成长整型数)ecvt(将浮点型数转换成字符串,19取四舍五入)fcvt(将浮点型数转换为字符串,20取四舍五入)gcvt(将浮点型数转换为字符串,21取四舍五入)第3章内存配置函数alloca(配置内存空间)brk(改变数据字节的()范围)calloc(配置内存空间)free(释放原先配置的()内存)getpagesize(取得内存分页大小)malloc(配置内存空间)mmap(建立内存映射)munmap(解除内存映射)realloc(更改己配置的()内存空间)sbrk(增加程序可用的()数据空间)第4章时间函数asctime(将时间和日期以字符串格式表示)clock(取得进程占用CPU的()大约时间)ctime(将时间和日期以字符串格式表示)difftime(计算时间差距)ftime(取得目前的()时间和日期)gettimeofday(取得目前的()时间)gmtime(取得目前的()时间和日期)localtime(取得当地目前的()时间和日期)mktime(将时间结构数据转换成经过的()秒数)settimeofday(设置目前的()时间)strftime(格式化日期和时间)time(取得目前的()时间)tzset(设置时区以供时间转换)第5章字符串处理函数bcmp(比较内存内容)bcopy(拷贝内存内容)bzero(将一段内存内容全清为零)ffs(在一整型数中查找第一个值为真的()位)index(查找字符串中第一个出现的()指定字符)memccpy(拷贝内存内容)memchr(在某一内存范围中查找一特定字符)memcmp(比较内存内容)memcpy(拷贝内存内容)memfrob(对内存区域编码)memmove(拷贝内存内容)memset(将一段内存空间填入某值)rindex(查找字符串中最后一个出现的()指定字符) strcasecmp(忽略大小写比较字符串)strcat(连接两字符串)strchr(查找字符串中第一个出现的()指定字符)strcmp(比较字符串)strcoll(采用目前区域的()字符排列次序来比较字符串) strcpy(拷贝字符串)strcspn(返回字符串中连续不含指定字符串内容的()字符数) strdup(复制字符串)strfry(随机重组字符串内的()字符)strlen(返回字符串长度)strncasecmp(忽略大小写比较字符串)strncat(连接两字符串)strncmp(比较字符串)strncpy(拷贝字符串)strpbrk(查找字符串中第一个出现的()指定字符)strrchr(查找字符串中最后一个出现的()指定字符)strspn(返回字符串中连续不合指定字符串内容的()字符数) strstr(在一字符串中查找指定的()字符串)strtok(分割字符串)第6章数学计算函数abs(计算整型数的()绝对值)acos(取反余弦函数值)asin(取反正弦函数值)atan(取反正切函数值)atan2(取得反正切函数值)ceil(取不小于参数的()最小整型数)cos(取余弦函数值)cosh(取双曲线余弦函数值)div(取得两整型数相除后的()商及余数)exp(计算指数)fabs(计算浮点型数的()绝对值)frexp(将浮点型数分为底数与指数)hypot(计算直角三角形斜边长)labs(计算长整型数的()绝对值)ldexp(计算2的()次方值)ldiv(取得两长整数相除后的()商及余数)log(计算以e为底的()对数值)log10(计算以10为底的()对数值)modf(将浮点型数分解成整数与小数)pow(计算次方值)sin(取正弦函数值)sinh(取双曲线正弦函数值)sqrt(计算平方根值)tan(取正切函数值)tanh(取双曲线正切函数值)第7章用户和组函数cuserid(取得用户帐号名称)endgrent(关闭组文件)endpwent(关闭密码文件)endutent(关闭utmp文件)fgetgrent(从指定的()文件来读取组格式) fgetpwent(从指定的()文件来读取密码格式) getegid(取得有效的()组识别码)geteuid(取得有效的()用户识别码)getgid(取得真实的()组识别码)getgrent(从组文件文件中取得帐号的()数据) getgrgid(从组文件中取得指定gid的()数据) getgrnan(从组文件中取得指定组的()数据) getgroups(取得组代码)getlogin(取得登录的()用户帐号名称)getpw(取得指定用户的()密码文件数据) getpwent(从密码文件中取得帐号的()数据) getpwnam(从密码文件中取得指定帐号的()数据) getpwuid(从密码文件中取得指定uid的()数据) getuid(取得真实的()用户识别码)getutent(从utmp文件中取得帐号登录数据)getutid(从utmp文件中查找特定的()记录) getutline(从utmp文件中查找特定的()记录) initgroups(初始化组清单)logwtmp(将一登录数据记录到wtmp文件)pututline(将utmp记录写入文件)setegid(设置有效的()组识别码)seteuid(设置有效的()用户识别码)setfsgid(设置文件系统的()组识别码) setfsuid(设置文件系统的()用户识别码) setgid(设置真实的()组识别码)setgrent(从头读取组文件中的()组数据) setgroups(设置组代码)setpwent(从头读取密码文件中的()帐号数据) setregid(设置真实及有效的()组识别码) setreuid(设置真实及有效的()用户识别码) setuid(设置真实的()用户识别码)setutent(从头读取utmp/文件中的()登录数据) updwtmp(将一登录数据记录到wtmp文件)utmpname(设置utmp文件路径)第8章数据加密函数crypt(将密码或数据编码)getpass(取得一密码输入)第9章数据结构函数bsearch(二元搜索)hcreate(建立哈希表)hdestory(删除哈希表)hsearch(哈希表搜索)insque(加入一项目至队列中)lfind(线性搜索)lsearch(线性搜索)qsort(利用快速排序法排列数组)rremque(从队列中删除一项目)tdelete(从二叉树中删除数据)tfind(搜索二叉树)tsearch(二叉树)twalk(走访二叉树)第10章随机数函数drand48(产生一个正的()浮点型随机数) erand48(产生一个正的()浮点型随机数) initstate(建立随机数状态数组)jrand48(产生一个长整型数随机数)lcong48(设置48位运算的()随机数种子) lrand48(产生一个正的()长整型随机数) mrand48(产生一个长整型随机数)nrand48(产生一个正的()长整型随机数) rand(产生随机数)random(产生随机数)seed48(设置48位运算的()随机数种子)setstate(建立随机数状态数组)srand(设置随机数种子)srand48(设置48位运算的()随机数种子) srandom(设置随机数种子)第11章初级I/O函数close(关闭文件)creat(建立文件)dup(复制文件描述词)dup2(复制文件描述词)fcntl(文件描述词操作)flock(锁定文件或解除锁定)fsync(将缓冲区数据写回磁盘)lseek(移动文件的()读写位置)mkstemp(建立唯一的()临时文件)open(打开文件)read(由己打开的()文件读取数据)sync(将缓冲区数据写回磁盘)write(将数据写入已打开的()文件内)第12章标准I/O函数clearerr(清除文件流的()错误旗标)fclose(关闭文件)fdopen(将文件描述词转为文件指针)feof(检查文件流是否读到了文件尾)fflush(更新缓冲区)fgetc(由文件中读取一个字符)fgetpos(取得文件流的()读取位置)fgets(由文件中读取一字符串)fileno(返回文件流所使用的()文件描述词) fopen(打开文件)fputc(将一指定字符写入文件流中)fputs(将一指定的()字符串写入文件内) fread(从文件流读取数据)freopen(打开文件)fseek(移动文件流的()读写位置)fsetpos(移动文件流的()读写位置)ftell(取得文件流的()读取位置)fwrite(将数据写至文件流)getc(由文件中读取一个字符)getchar(由标准输入设备内读进一字符)gets(由标准输入设备内读进一字符串)mktemp(产生唯一的()临时文件文件名) putc(将一指定字符写入文件中)putchar(将指定的()字符写到标准输出设备) puts(将指定的()字符串写到标准输出设备)rewind(重设文件流的()读写位置为文件开头) setbuf(设置文件流的()缓冲区)setbuffer(设置文件流的()缓冲区)setlinebuf(设置文件流为线性缓冲区)setvbuf(设置文件流的()缓冲区)tmpfile(建立临时文件)ungetc(将一指定字符写回文件流中)第13章进程及流程控制abort(以异常方式结束进程)assert(若测试的()条件不成立则终止进程)atexit(设置程序正常结束前调用的()函数)execl(执行文件)execle(执行文件)execlp(从PATH环境变量中查找文件并执行)execv(执行文件)execve(执行文件)execvp(执行文件)exit(正常结束进程)_exit(结束进程执行)fork(建立一个新的()进程)getpgid(取得进程组识别码)getpgrp(取得进程组识别码)getpid(取得进程识别码)getppid(取得父进程的()进程识别码)getpriority(取得程序进程执行优先权)longjmp(跳转到原先setjmp保存的()堆栈环境)nice(改变进程优先顺序)on_exit(设置程序正常结束前调用的()函数) ptrace(进程追踪)setjmp(保存目前堆栈环境)setpgid(设置进程组识别码)setpgrp(设置进程组识别码)setpriority(设置程序进程执行优先权)siglongjmp(跳转到原先sigsetjmp保存的()堆栈环境) sigsetjmp(保存目前堆栈环境)system(执行shell命令)wait(等待子进程中断或结束)waitpid(等待子进程中断或结束)第14章格式化输人输出函数fprintf(格式化输出数据至文件)fscanf(格式化字符串输入)printf(格式化输出数据)scanf(格式化字符串输入)snprintf(格式化字符串复制)sprintf(格式化字符串复制)sscanf(格式化字符串输入)vfprintf(格式化输出数据至文件)vfcanf(格式化字符串输入)vprintf(格式化输出数据)vscanf(格式化字符串输入)vsnprintf(格式化字符串复制)vsprintf(格式化字符串复制)vsscanf(格式化字符串输入)第15章文件及目录函数access(判断是否具有存取文件的()权限) alphasort(依字母顺序排序目录结构)chdir(改变当前的()工作目录)chmod(改变文件的()权限)chown(改变文件的()所有者)chroot(改变根目录)closedir(关闭目录)fchdir(改变当前的()工作目录)fchmod(改变文件的()权限)fchown(改变文件的()所有者)fstat(由文件描述词取得文件状态)ftruncate(改变文件大小)ftw(遍历目录树)get_current_dir_name(取得当前的()工作目录) getcwd(取得当前的()工作目录)getwd(取得当前的()工作目录)lchown(改变文件的()所有者)link(建立文件连接)lstat(由文件描述词取得文件状态)nftw(遍历目录树)opendir(打开目录)readdir(读取目录)readlink(取得符号连接所指的()文件) realpath(将相对目录路径转换成绝对路径)remove(删除文件)rename(更改文件名称或位置)rewinddir(重设读取目录的()位置为开头位置) scandir(读取特定的()目录数据)seekdir(设置下回读取目录的()位置)stat(取得文件状态)symlink(建立文件符号连接)telldir(取得目录流的()读取位置)truncate(改变文件大小)umask(设置建立新文件时的()权限遮罩)unlink(删除文件)utime(修改文件的()存取时间和更改时间) utimes(修改文件的()存取时间和更改时间)第16章信号函数alarm(设置信号传送闹钟)kill(传送信号给指定的()进程)pause(让进程暂停直到信号出现)psignal(列出信号描述和指定字符串)raise(传送信号给目前的()进程)sigaction(查询或设置信号处理方式)sigaddset(增加一个信号至信号集)sigdelset(从信号集里删除一个信号)sigemptyset(初始化信号集)sigfillset(将所有信号加入至信号集)sigismember(测试某个信号是否已加入至信号集里)signal(设置信号处理方式)sigpause(暂停直到信号到来)sigpending(查询被搁置的()信号)sigprocmask(查询或设置信号遮罩)sigsuspend(暂停直到信号到来)sleep(让进程暂停执行一段时间)isdigit(测试字符是否为阿拉伯数字)第17章错误处理函数ferror(检查文件流是否有错误发生)perror(打印出错误原因信息字符串)streror(返回错误原因的()描述字符串)第18章管道相关函数mkfifo(建立具名管道)pclose(关闭管道I/O)pipe(建立管道)popen(建立管道I/O)第19章Soket相关函数accept(接受socket连线)bind(对socket定位)connect(建立socket连线)endprotoent(结束网络协议数据的()读取) endservent(结束网络服务数据的()读取) gethostbyaddr(由IP地址取得网络数据)gethostbyname(由主机名称取得网络数据) getprotobyname(由网络协议名称取得协议数据) getprotobynumber(由网络协议编号取得协议数据) getprotoent(取得网络协议数据)getservbyname(依名称取得网络服务的()数据) getservbyport(依port号码取得网络服务的()数据)getservent(取得主机网络服务的()数据) getsockopt(取得socket状态)herror(打印出网络错误原因信息字符串)hstrerror(返回网络错误原因的()描述字符串) htonl(将32位主机字符顺序转换成网络字符顺序)htons(将16位主机字符顺序转换成网络字符顺序)inet_addr(将网络地址转成网络二进制的()数字) inet_aton(将网络地址转成网络二进制的()数字) inet_ntoa(将网络二进制的()数字转换成网络地址) listen(等待连接)ntohl(将32位网络字符顺序转换成主机字符顺序)ntohs(将16位网络字符顺序转换成主机字符顺序)recv(经socket接收数据)recvfrom(经socket接收数据)recvmsg(经socket接收数据)send(经socket传送数据)sendmsg(经socket传送数据)sendto(经socket传送数据)setprotoent(打开网络协议的()数据文件) setservent(打开主机网络服务的()数据文件) setsockopt(设置socket状态)shutdown(终止socket通信)socket(建立一个socket通信)第20章进程通信(IPC)函数ftok(将文件路径和计划代号转为SystemcVIPCkey)msgctl(控制信息队列的()运作)msgget(建立信息队列)msgrcv(从信息队列读取信息)msgsnd(将信息送入信息队列)semctl(控制信号队列的()操作)semget(配置信号队列)semop(信号处理)shmat(attach共享内存)shmctl(控制共享内存的()操作)shmdt(detach共享内存)shmget(配置共享内存)第21章记录函数closelog(关闭信息记录)openlog(准备做信息记录)syslog(将信息记录至系统日志文件)第22章环境变量函数getenv(取得环境变量内容)putenv(改变或增加环境变量)setenv(改变或增加环境变量)unsetenv(清除环境变量内容)第23章正则表达式regcomp(编译正则表达式字符串)regerror(取得正则搜索的()错误原因) regexec(进行正则表达式的()搜索) regfree(释放正则表达式使用的()内存) 第24章动态函数dlclose(关闭动态函数库文件)dlerror(动态函数错误处理)dlopen(打开动态函数库文件)dlsym(从共享对象中搜索动态函数)第25章其他函数getopt(分析命令行参数)isatty(判断文件描述词是否是为终端机)select(I/O多工机制)ttyname(返回一终端机名称)。

Linux下C语言函数库概述

Linux下C语言函数库概述

总体概述,C语言的函数库可以有三种使用的形式:静态、共享和动态。

其中静态库的代码在编译时就已连接到开发人员开发的应用程序中。

而共享库只是在程序开始运行时才载入,在编译时, 只是简单地指定需要使用的库函数就可以了。

动态库则是共享库的另一种变化形式,它也是在程序运行时载入,但与共享库不同的是, 使用的库函数不是在程序运行开始,而是在程序中的语句需要使用该函数时才载入,动态库可以在程序运行期间释放动态库所占用的内存,腾出空间供其它程序使用。

由于共享库和动态库并没有在程序中包括库函数的内容,只是包含了对库函数的引用,因此代码的规模比较小。

Linux下的库文件分为共享库和静态库两大类,它们两者的差别仅在程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。

静态函数库:每次当应用程序和静态连接的函数库一起编译时,任何引用的库函数中的代码都会被直接包含进最终的二进制程序。

共享函数库:包含每个库函数的单一全局版本,它在所有应用程序之间共享。

这一过程背后所涉及的机制相当复杂,但主要依靠的是现代计算机的虚拟内存能力,它允许包含库函数的物理内存安全地在多个独立用户程序之间共享。

区分库类型最好的方法是看它们的文件后缀,通常共享库以.so(Shared Object的缩写)结尾,静态链接库通常以.a结尾(Archive的缩写)。

在终端缺省情况下,共享库通常为绿色,而静态库为黑色。

已经开发的大多数库都采取共享库的方式,Linux系统中目前可执行文件的标准格式为ELF(Executable and Linkable Format)格式。

ELF格式的可执行文件使得共享库能够比较容易地实现:.a的是为了支持较老的a.out格式的可执行文件,静态库文件, 可以用ar 命令生成。

.so的是支持elf格式的可执行文件的库,动态库文件,编译时加上指定的选项即可生成。

在linux系统中可用的库都存放在/usr/lib和/lib目录中。

LinuxC函数之字符串处理函数

LinuxC函数之字符串处理函数

LinuxC函数之字符串处理函数字符串处理函数(13, 19)这些函数的头文件都是string.h非str前缀的字符串操作bcmp: 比较内存中的内容, 建议用memcmp()取代函数定义: int bcmp(const void *s1, const void *s2, int n);说明: 用来比较s1和s2所指的内存区前n个字节, 若参数n为0, 则返回0. 若参数s1和s2所指的内存完全相同返回0值, 否则返回非0值.bcopy: 拷贝内存内容, 建议用memcpy()取代函数定义: void bcopy(const void *src, void *dest, int n);说明: bcopy()和memcpy()一样都是用来拷贝src所指的内存内容前n个字节到dest所指的地址, 不过, 参数scr和dest在传给函数时位置是相反的.bzero: 将一段内存内容全清为0, 建议用bzero()取代函数定义: void bzero(void *s, int n);说明: bzero()会将参数s所指的内存区域前n个字节, 全部设为0. 相当于调用memset(void *s, 0, size_t n);ffs: 在一个整型数(2进制表示)中查找第一个值为1的位函数定义: int ffs(int i);说明: ffs()会由低位至高位, 判断参数i的2进制中每一位, 将最先出现位的值为1的位置返回. 若i为0, 返回0.应用举例:#include <stdio.h>#include <string.h>int main(void){int num[7] = {0, 1, 2, 3, 4, 5, 8};int i;for(i = 0; i < 7; i++){printf("%d: %d\n", num[i], ffs(num[i]));}return 0;}运行结果:0: 0 1: 1 2: 2 3: 1 4: 3 5: 1 8: 4index: 查找字符串中第一个出现的指定字符函数定义: char *index(const char *s, int c);说明: index()用来找出参数s字符串中第一个出现的参数c的地址, 然后将该字符出现的地址返回, 结束符也视为字符串的一部分. 返回值, 如果找到指定的字符则返回该字符所在地址, 否则返回0.rindex: 查找字符串中最后一个出现的指定字符函数定义: char *rindex(const char *s, int c);说明: rindex()用来找出参数s字符串中最后一个出现的参数c的地址, 然后将该字符出现的地址返回, 结束符也视为字符串的一部分. 返回值, 如果找到指定的字符则返回该字符所在地址, 否则返回0.应用举例:#include <stdio.h>#include <string.h>int main(void){const char *s = "1234556554321";char *p;printf("%s\n", s);printf("%s\n", index(s, '5'));printf("%s\n", rindex(s, '5'));p = memchr(s, '5', 3);if(p == NULL)printf("NULL\n");elseprintf("%s\n", p);printf("%s\n", memchr(s, '5', 8));return 0;}运行结果:123455655432155655432154321NULL556554321memchr: 在某一内存范围中找一特定字符函数定义: void *memchr(const void *s, int c, size_t n);说明: memchr()从头开始搜寻s所指内存的前n个字节, 直到发现第一个值为c的字符, 则返回指向该字符的指针. 如果找不到就返回0.应用举例: 见index和rinedxmemcmp: 比较内存内容函数定义: int memcmp(const void *s1, const void *s2, size_t n);说明: memcmp()用来比较s1和s2所指的内存区间前n个字符. 字符串大小的比较是以ASCII表上的顺序来决定, 此顺序亦为字符的值. memcmp()首先将s1第一个字符值减去s2第一个字符值, 若差值为0则再继续比较下个字符, 若不为0则将等差值返回. 返回值, 若s1和s2相等则返回0, 若s1大于s2则返回大于0的值, 若s1小于s2则返回小于0的值.应用举例:#include <stdio.h>#include <string.h>int main(void){const char *s1 = "123asd";const char *s2 = "123edf";int nR;nR = memcmp(s1, s2, sizeof(s1));if(nR == 0)printf("0\n");else if(nR > 1)printf("1\n");elseprintf("-1\n");return 0;}运行结果:-1memset: 将一段内存空间填入某值函数定义: void *memset(void *s, int c, size_t n);说明: memset()会将参数s所指向的内存区域前n个字节以参数c填入, 然后返回指向s的指针. 在编写程序时, 若需要将某一数组初始化, 使用memset(). 返回指向s的指针. 注意, 参数c虽然声明为int, 但必须是unsigned char, 所以范围在0到255之间.应用举例:#include <stdio.h>#include <string.h>int main(void){char s[5];memset(s, 'a', sizeof(s));s[4] = '\0';printf("%s\n", s);return 0;}运行结果:aaaamemfrob: 对内存区域编码, Linux特有函数定义: void *memforb(void *s, size_t n);说明: memfrob()用来将参数s所指的内存空间前n个字符与42作XOR运算, 用途是可以隐藏一特定字符串内容, 只要再用相同的参数调用memfrob()即可将内容还原.应用举例:#include <stdio.h>#include <string.h>int main(void){char s[] = "Funtion memfrob tests.";printf("%s\n", s);memfrob(s, strlen(s));printf("%s\n", s);memfrob(s, strlen(s));printf("%s\n", s);return 0;}运行结果:Funtion memfrob tests.l_D^CEDGOGLXEH^OY^YFuntion memfrob tests.memcpy: 拷贝内存内容函数定义: void *memcpy(void *dest, void *scr, size_t n);说明: memcpy()用来拷贝src所指的内存前n个字节到dest所指的地址上. 于strcpy()不同, memcpy()会完整的复制n个字节, 不会因遇到结束符'\0'而结束. 返回指向dest的指针. 注意, 指针src和dest所指的内存区域不可重叠.memccpy: 拷贝内存内容函数定义: void *memccpy(void *dest, const void *src, int c, size_t n);说明: memccpy()用来拷贝src所指的内存前n个字节到dest所指的地址上. 与memcpy()不同的是, memccpy()会在复制时检查参数c是否出现, 若是出现则返回dest中的值为c的下一个字节地址. 返回0表示在scr中前n个字节中没有c.memmove: 拷贝内存内容函数定义: void *memmove(void *dest, const void *src, size_t n);说明: memmove()和memcpy()一样用来拷贝src所指的内存前n个字节到dest所指的地址上. 不同的是memmove()的scr和dest 所指的内存区域可以重叠. 返回值指向dest的指针.应用举例:#include <stdio.h>#include <string.h>int main(void){char src[] = "abcdefghi\0";char dest1[10];char dest2[10];char dest3[10];printf("%s\n", src);memcpy(dest1, src, 10);memccpy(dest2, src, 'c', 10);//没用明白memmove(dest3, src, 10);printf("%s\n", dest1);printf("%s\n", dest2);printf("%s\n", dest3);return 0;}运行结果:abcdefghiabcdefghiabcx<abcdefghiabcdefghistr前缀的字符串操作1. 字符串比较strcmp: 比较字符串函数定义: int strcmp(const char *s1, const char *s2);说明: strcmp()用来比较参数s1和s2字符串. 字符串大小的比较是以ASCII码表上的顺序来决定, 此顺序亦为字符的值. strcmp()首先将s1第一个字符值减去s2第一个字符值,若差值为0则再继续比较下个字符, 若差值不为0则将差值返回. 若参数s1和s2字符串相同则返回0, s1若大于s2则返回大于0的值, s1若小于s2则返回小于0的值.strncmp: 比较字符串(指定数目)函数定义: int strncmp(const char *s1, const char *s2, size_t n);说明: strncmp()用来比较参数s1和s2字符串前n个字符. 若参数s1和s2字符串相同则返回0, s1若大于s2则返回大于0的值, s1若小于s2则返回小于0的值.strcasecmp: 忽略大小写比较字符串函数定义: int strcasecmp(const char *s1, const char *s2);说明: strcasecmp()用来比较参数s1和s2字符串, 比较时会自动忽略大小写的差异. 若参数s1和s2字符串相同则返回0, s1若大于s2则返回大于0的值, s1若小于s2则返回小于0的值.strncasecmp: 忽略大小写比较字符串(指定数目)函数定义: int strncasecmp(const char *s1, const char *s2, size_t n);说明: strncasecmp()用来比较参数s1和s2字符串前n个字符, 比较时会自动忽略大小写的差异. 若参数s1和s2字符串相同则返回0, s1若大于s2则返回大于0的值, s1若小于s2则返回小于0的值.strcoll: 采用目前区域的字符排列次序来比较字符串函数定义: int strcoll(const char *s1, const char *s2);说明: strcoll()会依环境变量LC_COLLATE所指定的文字排列次序来比较s1和s2字符串. 若参数s1和s2字符串相同则返回0, s1若大于s2则返回大于0的值, s1若小于s2则返回小于0的值.附加说明: 若LC_COLLATE为“POSIX”或“C”, 则strcoll()与strcmp()作用完全相同.应用举例:#include <stdio.h>#include <string.h>int main(void){char *src = "abcdefefdsa";char *cmp = "abcdEFe";printf("%d ", strcmp(src, cmp));printf("%d ", strncmp(src, cmp, 6));printf("%d ", strcasecmp(src, cmp));printf("%d ", strncasecmp(src, cmp, 6));printf("\n");return 0;}运行结果:1 32 102 02. 字符串连接strcat: 连接两个字符串函数定义: char *strcat(char *dest, const char *src);说明: strcat()会将参数src字符串拷贝到参数dest所指的字符串尾. 注意, 第一个参数dest要有足够的空间来容纳要拷贝的字符串. 返回参数dest的字符串起始地址.strncat: 连接两个字符串(指定数目)函数定义: char *strncat(char *dest, const char *src, size_t n);说明: strncat()会将参数src字符串拷贝n个字符到参数dest所指的字符串尾. 注意, 第一个参数dest要有足够的空间来容纳要拷贝的字符串. 返回参数dest的字符串起始地址.应用举例:#include <stdio.h>#include <string.h>int main(void){char *src = "abcdefghi";char dest1[30] = "jklmn";char dest2[30] = "jklmn";printf("%s\n", src);printf("%s\n", dest1);strcat(dest1, src);printf("%s\n", dest1);strncat(dest2, src, 6);printf("%s\n", dest2);return 0;}运行结果:abcdefghijklmnjklmnabcdefghijklmnabcdef3. 字符串查找strchr: 查找字符串中第一个出现的指定字符函数定义: char *strchr(const char *s, int c);说明: strrchr()用来找出参数s字符串中第一个出现的参数c地址, 然后将该字符出现的地址返回. 如果找不到就返回0.strrchr: 查找字符串中最后一个出现的指定字符函数定义: char *strrchr(const char *s, int c);说明: strrchr()用来找出参数s字符串中最后一个出现的参数c地址, 然后将该字符出现的地址返回. 如果找不到就返回0.strpbrk: 查找字符串中第一个出现的多个指定字符中的一个字符函数定义: char *strpbrk(const char *s, const char *accept);说明: strpbrk()用来找出参数s字符串中最先出现存在参数accept字符串中的任意字符. 如果找不到返回0.strstr: 在一字符串中查找指定的字符串函数定义: char *strstr(const char *haystack, const char *needle);说明: strstr()会从字符串haystack中搜寻字符串needle, 并将第一次出现的地址返回. 如果找到指定的字符则返回该字符所在地址,否则返回0.strcspn: 返回字符串中从头开始连续不含指定字符串内容的字符数函数定义: size_t strcspn(const char *s ,const char *reject);说明: strcspn()从参数s字符串的开头计算连续的字符, 而这些字符都完全不在参数reject所指的字符串中. 简单地说, 若strcspn()返回的数值为n, 则代表字符串s开头连续有n个字符都不含字符串reject内的字符.strspn: 返回字符串中从头开始连续含指定字符串内容的字符数函数定义: size_t strspn(const char *s, const char *accept);说明: strspn()从参数s字符串的开头计算连续的字符, 而这些字符都完全是accept所指字符串中的字符. 简单的说, 若strspn()返回的数值为n, 则代表字符串s开头连续有n个字符都是属于字符串accept内的字符.应用举例:#include <stdio.h>#include <string.h>int main(void){char *src = "15648499166581";char *pchr, *prchr, *ppbrk, *pstr;int ncspn, nspn;pchr = strchr(src, '5');prchr = strrchr(src, '5');ppbrk = strpbrk(src, "6489");pstr = strstr(src, "849");ncspn = strcspn(src, "489");nspn = strspn(src, "916");printf("%s\n", src);printf("%s\n", pchr);printf("%s\n", prchr);printf("%s\n", ppbrk);printf("%s\n", pstr);printf("%d\n", ncspn);printf("%d\n", nspn);return 0;}运行结果:1564849916658156484991665815816484991665818499166581314. 字符串拷贝strcpy: 拷贝字符串函数定义: char *strcpy(char *dest, const char *scr);说明: strcpy()会将参数src字符串拷贝至参数dest所指的地址. 返回参数dest的字符串起始地址. 注意, 如果参数dest所指的内存空间不够大, 可能会造成缓冲溢出的错误情况,在编写程序时请特别留意, 或用strncpy()来取代.strncpy: 拷贝字符串(指定数目)函数定义: char *strncpy(char *dest, const char *src, size_t n);说明: strncpy()会将参数src字符串拷贝前n个字符至参数dest 所指的地址, 返回参数dest的字符串起始地址strdup: 拷贝字符串(自动配置内存空间)函数定义: char *strdup(const char *s);说明: strdup()会先用maolloc()配置与参数s字符串相同的空间大小, 然后将参数s字符串的内容复制到该内存地址, 然后把该地址返回. 该地址最后可以利用free()来释放. 返回一指向复制后的新字符串地址的指针; 若返回NULL表示内存不足.应用举例:#include <stdio.h>#include <string.h>#include <stdlib.h>int main(void){char *src = "abcdefghi";char *destcpy, *destncpy, *destdup;printf("%s\n", src);destcpy = (char *)malloc(strlen(src));strcpy(destcpy, src);printf("%s\n", destcpy);destncpy = (char *)malloc(strlen(src));strncpy(destncpy, src, 6);printf("%s\n", destncpy);destdup = strdup(src);printf("%s\n", destdup);free(destcpy);free(destncpy);free(destdup);return 0;}运行结果:abcdefghiabcdefghiabcdefabcdefghi5. 其它操作strfry: 随机重组字符串内的字符函数定义: char *strfry(char *string);说明: strfry()会利用rand()来随机重新分配参数string字符串内的字符, 然后返回指向参数string的指针.strlen: 返回字符串长度, 不包括结束符'/0'函数定义: size_t strlen(const char *s);说明: strlen()用来计算指定的字符串s的长度, 不包括结束字符'\0'.strtok: 分割字符串函数定义: char *strtok(char *s, const char *delim);说明: strtok()用来将字符串分割成一个个片段. 参数s指向欲分割的字符串, 参数delim则为分割字符串, 当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0字符. 在第一次调用时, strtok()必需给予参数s字符串, 往后的调用则将参数s设置成NULL. 每次调用成功则返回下一个分割后的字符串指针.应用举例:#include <stdio.h>#include <string.h>int main(void){char s[] = "as-vd; efdaf;fe-fdef?";char *d = "-; f";char *ps;printf("%s\t%d\n", s, strlen(s));printf("%s\n", strfry(s));printf("%s ", strtok(s, d));while((ps = strtok(NULL, d))){printf("%s ", ps);}printf("\n");return 0;}运行结果:as-vd; efdaf;fe-fdef? 21;edfvdas-ad; efeff-f?ed vdas ad e e ?。

【linux】下的mkfifo命令和【C语言】中的mkfifo函数

【linux】下的mkfifo命令和【C语言】中的mkfifo函数

【linux】下的mkfifo命令和【C语⾔】中的mkfifo函数# mkfifo myfifo# ping >> myfifo另开⼀个终端:# cat myfifo看到效果了吧mkfifo 命令⽤途制作先进先出(FIFO)特别⽂件。

语法mkfifo [ -m Mode ] File …描述根据指定的顺序,mkfifo 命令创建由 File 参数指定的 FIFO 特别⽂件。

如果没有指定 -m Mode 标志,则 FIFO ⽂件的⽂件⽅式是通过⽂件⽅式创建所修改的包含 OR 的 S_IRUSR、S_IWUSR、S_IRGRP、S_IWGRP、S_IROTH 和 S_IWOTH 许可权的⼀位宽度(请参阅 umask 命令)。

mkfifo 命令与 mkfifo ⼦例程运⾏相似。

标志-m Mode 设置新创建的 FIFO ⽂件的⽂件许可权位的值为指定的⽅式值。

Mode 变量与为 chmod 命令定义的⽅式操作数相同。

如果使⽤了字符 +(加号)和 -(减号),则它们是相对于初始值 a=rw 来解释的(即具有许可权 rw-rw-rw-)。

退出状态这条命令返回以下退出值:0 成功创建所有指定的 FIFO 特别⽂件。

>0 发⽣错误。

⽰例1. 要使⽤许可权 prw-r–r– 创建 FIFO 特别⽂件,请输⼊:mkfifo -m 644 /tmp/myfifo此命令使⽤所有者的读/写许可权以及组和其他⽤户的读许可权来创建 /tmp/myfifo ⽂件。

2. 使⽤ -(减号)操作符创建⼀个 FIFO 特别⽂件以设置 prw-r—– 许可权,请输⼊:mkfifo -m g-w,o-rw /tmp/fifo2此命令创建 /tmp/fifo2 ⽂件,删除组的写权限和其他⽤户的所有许可权。

注:如果多于⼀个的⽂件是⽤ -(减号)操作符创建的,那么⽤顿号分隔每个⽅式说明符,中间不⽤空格。

⽂件/usr/bin/mkfifo 包含 mkfifo 命令。

Linux下C开发环境的搭建过程---gcc、glibc安装和升级操作方法

Linux下C开发环境的搭建过程---gcc、glibc安装和升级操作方法

Linux下C开发环境的搭建过程---gcc、glibc安装和升级操作⽅法Linux下C开发环境的搭建过程——安装gcc前⾔在Linux系统中,软件安装程序⽐较纷繁复杂,不过最常见的有两种:1)⼀种是软件的源代码,您需要⾃⼰动⼿编译它。

这种软件安装包通常是⽤gzip压缩过的tar包(后缀为.tar.gz)。

2)另⼀种是软件的可执⾏程序,你只要安装它就可以了。

这种软件安装包通常被是⼀个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。

Linux和C天⽣就有不解之缘,Linux操作系统的内核主要就是⽤C写的,另外Linux下的很多软件也是⽤C写的,特别是⼀些著名的服务软件,⽐如MySQL、Apache等。

初学者在编译MySQL这样的软件时,可能遇到过各式各样的错误,其实只要你初步了解了Linux的C开发环境,你就能⾃⾏解决这些错误。

Linux的C开发环境与Windows的有所不同,在Linux下,⼀个完整的C开发环境由以下三个部分组成:1、函数库:glibc要构架⼀个完整的C开发环境,Glibc是必不可少的,它是Linux下C的主要函数库。

Glibc有两种安装⽅式:A、安装成测试⽤的函数库——在编译程序时⽤不同的选项来试⽤新的函数库B、安装成主要的C函数库——所有新编译程序均⽤的函数库Glibc含⼏个附加包:LinuxThreads、locale和crypt,通常它们的⽂件名随版本不同⽽类似于下列⽂件名:glibc-2.06.tar.gzglibc-linuxthreads-2.0.6.tar.gzglibc-localedate-2.0.6.tar.gzglibc-crypt-2.0.6.tar.gz2、编译器:gccgcc(GNU CCompiler)是GNU推出的功能强⼤、性能优越的多平台编译器,gcc编译器能将C、C++语⾔源程序、汇编程序和⽬标程序编译、连接成可执⾏⽂件,以下是gcc⽀持编译的⼀些源⽂件的后缀及其解释:3、系统头⽂件:glibc_header缺少了系统头⽂件的话,很多⽤到系统功能的C程序将⽆法编译。

C语言标准库函数大全

C语言标准库函数大全
file://F:\DOCUME~1\lichao\LOCALS~1\Te 2 of 22
相册
BOOK photo 自己做的
Expert
anjou jeffreyzhao Ricktroy shenfx 吕震宇 随心所欲 小寒
Friends
Hack Site
Hack a day Hack And Slash Hack Canada
2009-4-3
目录函数,所在函数库为dir.h、dos.h int chdir(char *path) 使指定的目录path(如:"C:\\WPS")变成当前的工 作目录,成功返回0 int findfirst(char *pathname,struct ffblk *ffblk,int attrib) 查找指定的文件,成功返回0 pathname为指定的目录名和文件名,如"C:\\WPS\\TXT" ffblk为指定的保存文件信息的一个结构,定义如下: ┏━━━━━━━━━━━━━━━━━━┓ ┃struct ffblk ┃ ┃{ ┃ ┃ char ff_reserved[21]; /*DOS保留字*/┃ ┃ char ff_attrib; /*文件属性*/ ┃ ┃ int ff_ftime; /*文件时间*/ ┃ ┃ int ff_fdate; /*文件日期*/ ┃ ┃ long ff_fsize; /*文件长度*/ ┃ ┃ char ff_name[13]; /*文件名*/ ┃ ┃} ┃ ┗━━━━━━━━━━━━━━━━━━┛ attrib为文件属性,由以下字符代表 ┏━━━━━━━━━┳━━━━━━━━┓ ┃FA_RDONLY 只读文件┃FA_LABEL 卷标号┃ ┃FA_HIDDEN 隐藏文件┃FA_DIREC 目录 ┃ ┃FA_SYSTEM 系统文件┃FA_ARCH 档案 ┃ ┗━━━━━━━━━┻━━━━━━━━┛ 例: struct ffblk ff; findfirst("*.wps",&ff,FA_RDONLY);

Linux_C函数库参考手册

Linux_C函数库参考手册

执行
c is a lower-case character s is a lower-case character e is a lower-case character
isprint(测试字符是否为可打印字符)
相关函数 表头文件 定义函数 函数说明
isgraph
#include<ctype.h>
int isprint(int c); 检查参数 c 是否为可打印字符,若 c 所对映的 ASCII 码可打印,其 中包含空格字符,则返回 TRUE。
此为宏定义,非真正函数
范例
/*将字符串 str[]中内含的空格字符找出,并显示空格字符的 ASCII 码*/ #include <ctype.h> main() {
char str="123c @# FD\tsP[e?\n"; int i; for(i=0;str[i]!=0;i++) if(isspace(str[i]))
isascii(测试字符是否为 ASCII 码字符)
相关函数 表头文件 定义函数 函数说明 返回值 附加说明
iscntrl
#include <ctype.h>
int isascii(int c); 检查参数 c 是否为 ASCII 码字符,也就是判断 c 的范围是否在 0 到 127 之间。 若参数 c 为 ASCII 码字符,则返回 TRUE,否则返回 NULL ( 0 )。
执行 @#[?
isupper(测试字符是否为大写英文字母)
相关函数 表头文件 定义函数 函数说明 返回值 附加说明
isalpha,islower #include<ctype.h> int isupper(int c) 检查参数 c 是否为大写英文字母。 若参数 c 为大写英文字母,则返回 TRUE,否则返回 NULL(0)。 此为宏定义,非真正函数
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
nrand48(产生一个正的长整型随机数)
rand(产生随机数)
random(产生随机数)
seed48(设置48位运算的随机数种子)
setstate(建立随机数状态数组)
srand(设置随机数种子)
srand48(设置48位运算的随机数种子)
srandom(设置随机数种子)
第11章 初级I/O函数
insque(加入一项目至队列中)
lfind(线性搜索)
lsearch(线性搜索)
qsort(利用快速排序法排列数组)
rremque(从队列中删除一项目)
tdelete(从二叉树中删除数据)
tfind(搜索二叉树)
tsearch(二叉树)
twalk(走访二叉树)
第10章 随机数函数
strdup(复制字符串)
strfry(随机重组字符串内的字符)
strlen(返回字符串长度)
strncasecmp(忽略大小写比较字符串)
strncat(连接两字符串)
strncmp(比较字符串)
strncpy(拷贝字符串)
strpbrk(查找字符串中第一个出现的指定字符)
strrchr(查找字符串中最后一个出现的指定字符)
getgid(取得真实的组识别码)
getgrent(从组文件文件中取得帐号的数据)
getgrgid(从组文件中取得指定gid的数据)
getgrnan(从组文件中取得指定组的数据)
getgroups(取得组代码)
getlogin(取得登录的用户帐号名称)
getpw(取得指定用户的密码文件数据)
asctime(将时间和日期以字符串格式表示)
clock(取得进程占用CPU的大约时间)
ctime(将时间和日期以字符串格式表示)
difftime(计算时间差距)
ftime(取得目前的时间和日期)
gettimeofday(取得目前的时间)
gmtime(取得目前的时间和日期)
localtime(取得当地目前的时间和日期)
第7章 用户和组函数
cuserid(取得用户帐号名称)
endgrent(关闭组文件)
endpwent(关闭密码文件)
endutent(关闭utmp文件)
fgetgrent(从指定的文件来读getegid(取得有效的组识别码)
geteuid(取得有效的用户识别码)
linux C函数库参考
新一篇: Linux下各类TCP网络服务器的实现源代码
第1章 字符测试函数
isalnum(测试字符是否为英文字母或数字)
isalpha(测试字符是否为英文字母)
isascii(测试字符是否为ASCII码字符)
isblank(测试字符是否为空格字符)
iscntrl(测试字符是否为ASCII码的控制字符)
strtod(将字符串转换成浮点型数)
strtol(将字符串转换成长整型数)
strtoul(将字符串转换成无符号长整型数)
toascii(将整型数转换成合法的ASCII码字符)
tolower(将大写字母转换成小写字母)
toupper(将小写字母转换成大写字母)
第3章 内存配置函数
alloca(配置内存空间)
putchar(将指定的字符写到标准输出设备)
puts(将指定的字符串写到标准输出设备)
rewind(重设文件流的读写位置为文件开头)
setbuf(设置文件流的缓冲区)
setbuffer(设置文件流的缓冲区)
setlinebuf(设置文件流为线性缓冲区)
setvbuf(设置文件流的缓冲区)
isdigit(测试字符是否为阿拉伯数字)
isgraph(测试字符是否为可打印字符)
islower(测试字符是否为小写英文字母)
isprint(测试字符是否为可打印字符)
isspace(测试字符是否为空格字符)
ispunct(测试字符是否为标点符号或特殊符号)
isupper(测试字符是否为大写英文字母)
strspn(返回字符串中连续不合指定字符串内容的字符数)
strstr(在一字符串中查找指定的字符串)
strtok(分割字符串)
第6章 数学计算函数
abs(计算整型数的绝对值)
acos(取反余弦函数值)
asin(取反正弦函数值)
atan(取反正切函数值)
atan2(取得反正切函数值)
fgetpos(取得文件流的读取位置)
fgets(由文件中读取一字符串)
fileno(返回文件流所使用的文件描述词)
fopen(打开文件)
fputc(将一指定字符写入文件流中)
fputs(将一指定的字符串写入文件内)
fread(从文件流读取数据)
freopen(打开文件)
fseek(移动文件流的读写位置)
rindex(查找字符串中最后一个出现的指定字符)
strcasecmp(忽略大小写比较字符串)
strcat(连接两字符串)
strchr(查找字符串中第一个出现的指定字符)
strcmp(比较字符串)
strcoll(采用目前区域的字符排列次序来比较字符串)
strcpy(拷贝字符串)
strcspn(返回字符串中连续不含指定字符串内容的字符数)
setgid(设置真实的组识别码)
setgrent(从头读取组文件中的组数据)
setgroups(设置组代码)
setpwent(从头读取密码文件中的帐号数据)
setregid(设置真实及有效的组识别码)
setreuid(设置真实及有效的用户识别码)
setuid(设置真实的用户识别码)
setutent(从头读取utmp/文件中的登录数据)
drand48(产生一个正的浮点型随机数)
erand48(产生一个正的浮点型随机数)
initstate(建立随机数状态数组)
jrand48(产生一个长整型数随机数)
lcong48(设置48位运算的随机数种子)
lrand48(产生一个正的长整型随机数)
mrand48(产生一个长整型随机数)
tmpfile(建立临时文件)
ungetc(将一指定字符写回文件流中)
第13章 进程及流程控制
abort(以异常方式结束进程)
assert(若测试的条件不成立则终止进程)
atexit(设置程序正常结束前调用的函数)
execl(执行文件)
execle(执行文件)
execlp(从PATH环境变量中查找文件并执行)
updwtmp(将一登录数据记录到wtmp文件)
utmpname(设置utmp文件路径)
第8章 数据加密函数
crypt(将密码或数据编码)
getpass(取得一密码输入)
第9章 数据结构函数
bsearch(二元搜索)
hcreate(建立哈希表)
hdestory(删除哈希表)
hsearch(哈希表搜索)
ceil(取不小于参数的最小整型数)
cos(取余弦函数值)
cosh(取双曲线余弦函数值)
div(取得两整型数相除后的商及余数)
exp(计算指数)
fabs(计算浮点型数的绝对值)
frexp(将浮点型数分为底数与指数)
hypot(计算直角三角形斜边长)
labs(计算长整型数的绝对值)
ldexp(计算2的次方值)
mktime(将时间结构数据转换成经过的秒数)
settimeofday(设置目前的时间)
strftime(格式化日期和时间)
time(取得目前的时间)
tzset(设置时区以供时间转换)
第5章 字符串处理函数
bcmp(比较内存内容)
bcopy(拷贝内存内容)
bzero(将一段内存内容全清为零)
getpriority(取得程序进程执行优先权)
longjmp(跳转到原先setjmp保存的堆栈环境)
nice(改变进程优先顺序)
on_exit(设置程序正常结束前调用的函数)
ptrace(进程追踪)
setjmp(保存目前堆栈环境)
setpgid(设置进程组识别码)
setpgrp(设置进程组识别码)
execv(执行文件)
execve(执行文件)
execvp(执行文件)
exit(正常结束进程)
_exit(结束进程执行)
fork(建立一个新的进程)
getpgid(取得进程组识别码)
getpgrp(取得进程组识别码)
getpid(取得进程识别码)
getppid(取得父进程的进程识别码)
close(关闭文件)
creat(建立文件)
dup(复制文件描述词)
dup2(复制文件描述词)
fcntl(文件描述词操作)
flock(锁定文件或解除锁定)
fsync(将缓冲区数据写回磁盘)
lseek(移动文件的读写位置)
mkstemp(建立唯一的临时文件)
open(打开文件)
read(由己打开的文件读取数据)
initgroups(初始化组清单)
logwtmp(将一登录数据记录到wtmp文件)
pututline(将utmp记录写入文件)
setegid(设置有效的组识别码)
相关文档
最新文档