慢慢总结C语言一些常用函数

本文介绍了C语言中常用的几种标准库函数,包括文件读写、字符串处理、内存操作等,详细解释了它们的功能、参数及返回值,有助于读者理解和掌握这些基本函数的使用。
fgets
头文件:    #include <stdio.h>
函数原型:char *fgets(char *s, int size, FILE *stream);
返回值:    成功时s指向哪返回的指针就指向哪,出错或者读到文件末尾时返回NULL。
说明:        fgets从指定的文件中读一行字符到调用者提供的缓冲区中。

gets
头文件:    #include <stdio.h>
函数原型:char *gets(char *s);
返回值:    成功时s指向哪返回的指针就指向哪,出错或者读到文件末尾时返回NULL。
说明:        gets从标准输入读一行字符到调用者提供的缓冲区中。

popen
头文件:    #include <stdio.h>
函数原型:FILE * popen(const char *command , const char *type );

返回值:    如果调用fork()或pipe()失败,或者不能分配内存将返回NULL,否则返回标准I/O流。

                    popen()没有为内存分配失败设置errno值。

                    如果调用fork()或pipe()时出现错误errno被设为相应的错误类型。

                    如果type参数不合法,errno将返回EINVAL。

说明:        popen()函数通过创建一个管道,调用fork()产生一个子进程,

                    执行一个shell以运行命令来开启一个进程。

                    这个管道必须由pclose()函数关闭,而不是fclose()函数。

                    pclose()函数关闭标准I/O流,等待命令执行结束,然后返回shell的终止状态。

                    如果shell不能被执行,则pclose()返回的终止状态与shell已执行exit一样。

              type参数只能是读或写中的一种,得到的返回值(标准I/O流)也具有和type相应的只读或只写类型。

                    如果type是"r"则文件指针连接到command的标准输出;

                    如果type是"w"则文件指针连接到command的标准输入。

              command参数是一个指向以NULL结束的shell命令字符串的指针。

                    这行命令将被传到bin/sh并使用-c标志,shell将执行这个命令。

              popen()的返回值是个标准I/O流,必须由pclose终止。而这个流是单向的(只能用于读或写)。

                    向这个流写内容相当于写入该命令的标准输入,命令的标准输出 和调用popen()的进程相同;

                    与之相反的,从流中读数据相当于读取命令的标准输出,命令的标准输入和调用popen()的进程相同。


pclose
头文件:    #include <stdio.h>
函数原型:int pclose(FILE *stream);
返回值:    若成功返回shell的终止状态(也即子进程的终止状态),若出错返回-1,错误原因存于errno中。
说明:        见"popen"说明。

strlen
头文件:    #include <string.h>
函数原型:extern int strlen(char *s);
返回值:    返回s的长度,不包括结束符NULL。
说明:        计算字符串s的(unsigned int型)长度。

atof
头文件:    #include <stdlib.h>
函数原型:double atof(const char* str);
返回值:    返回转换后的浮点数;如果字符串 str 不能被转换为 double,那么返回 0.0。

说明:        atof() 的名字来源于 ascii to floating point numbers 的缩写,它会扫描参数str字符串,

                    跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),

                    直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束'\0'才结束转换,

                    并将结果返回。

                    参数str 字符串可包含正负号、小数点或E(e)来表示指数部分, 如123. 456 或123e-2。


atoi
头文件:    #include <stdlib.h>
函数原型:int atoi(const char *nptr); 
返回值:    返回整型数。否则,返回零。

说明:        数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,

                   之后检测到非数字(包括结束符 \0) 字符时停止转换。


memcpy
头文件:    #include <string.h>
函数原型:extern void *memcpy(void *dest, void *src, unsigned int count);
返回值:    函数返回指向dest的指针。
说明:        由src所指内存区域复制count个字节到dest所指内存区域,src和dest所指内存区域不能重叠。

memset
头文件:    #include <string.h>
函数原型:extern void *memset(void *buffer, int c, int count);
返回值:    其返回值为指向buffer的指针。

说明:        把buffer所指内存区域的前count个字节设置成字符c,

                    它是对较大的结构体或数组进行清零操作的一种最快方法。


sprintf
头文件:#include <stdio.h>
函数原型:int sprintf(char *buffer, const char *format [, argument] … );
返回值:字符串长度 strlen。
说明:把格式化的数据写入某个字符串,注意可变参数的使用。

strchr
头文件:    #include <string.h>
函数原型:extern char *strchr(char *str,char character);
返回值:    返回指向第一次出现字符character位置的指针,如果没找到则返回NULL。

说明:        从字符串str中寻找字符character第一次出现的位置,

                    str为一个字符串的指针,character为一个待查找字符。


scanf
头文件:    #include <stdio.h>
函数原型:int scanf(char *format[,argument,...]);
返回值:    scanf()函数返回成功赋值的数据项数,出错时则返回EOF。

说明:        scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。

                    可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。

                    其调用格式为: scanf("<格式化字符串>",<地址表>);
                    其控制串由三类字符构成:
                            1。格式化说明符;
                            2。空白符;
                            3。非空白符;

                 (A)格式化说明符
                            格式字符           说明
                            %a                 读入一个浮点值(仅C99有效) 
                            %A                 同上
                            %c                 读入一个字符
                            %d                 读入十进制整数
                            %i                  读入十进制,八进制,十六进制整数
                            %o                 读入八进制整数
                            %x                 读入十六进制整数
                            %X                同上
                            %c                 读入一个字符
                            %s                 读入一个字符串
                            %f                  读入一个浮点数
                            %F                 同上
                            %e                 同上
                            %E                 同上
                            %g                 同上
                            %G                 同上
                            %p                 读入一个指针
                            %u                 读入一个无符号十进制整数
                            %n                 至此已读入值的等价字符数

                            %[]                 扫描字符集合

                            %%                读%符号

                   附加格式说明字符表
                            修饰符                            说明
                            L/l 长度修饰符               输入"长"数据
                            h 长度修饰符                 输入"短"数据
                            W 整型常数                   指定输入数据所占宽度
                            * 星号                             空读一个数据 
                            hh,ll同上h,l但仅对C99有效。

                 (B)空白字符

                            空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,

                            空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。

                 (C)非空白字符
                            一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。

sscanf
头文件:    #include <stdio.h>
函数原型:int sscanf(const char *buffer,const char *format,[argument ]...);
返回值:    失败返回0 ,否则返回格式化的参数个数。
说明:        sscanf会从buffer里读进数据,依照format的格式将数据写入到argument里。
                    第二个参数可以是一个或多个 {%[*] [width] [{h | I | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}。
                    注:

                           1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入,

                                  也就是不把此数据读入参数中。

                           2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。
                           3、width表示读取宽度。

                           4、{h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,

                                 L表示4字节size(double例外),l64表示8字节size。

                           5、type :这就很多了,就是%s,%d之类。

                           6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,

                                 不会向目标参数中写入值。

                   如:
                           sscanf("123456 abcdedf", "%[^ ]", buf);

                     printf("%s/n", buf);

                           结果为:123456


isspace
头文件:    #include <ctype.h>
函数原型:extern int isspace(int c);

返回值:    当c为空白符时,返回非零值,否则返回零。

                    空白符指空格、水平制表、垂直制表、换页、回车和换行符。

说明:        判断字符c是否为空白符。

strcmp
头文件:    #include <string.h>
函数原型:int strcmp(const char *s1, const char *s2);

返回值:    若参数s1 和s2 字符串相同则返回0。s1 若大于s2 则返回大于0 的值。

                    s1 若小于s2 则返回小于0 的值。

说明:        s1, s2 为需要比较的两个字符串。

                    字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。

                    strcmp()首先将s1 第一个字符值减去s2 第一个字符值,

                    若差值为0 则再继续比较下个字符,若差值不为0 则将差值返回。


strcoll
头文件:    #include <string.h>
函数原型:int strcoll( const char * str1, const char * str2 );
返回值:    若字符串 str1 和 str2 相同则返回0。若 str1 大于 str2 则返回大于 0 的值,否则返回小于 0 的值。

说明:        strcoll() 会依环境变量 LC_COLLATE 所指定的文字排列次序来比较 s1 和 s2 字符串。

                    默认情况下,LC_COLLATE 为"POSIX"或"C",strcoll() 和 strcmp() 一样根据ASCII 比较字符串大小。

                    对于设置了 LC_COLLATE 语言环境的情况下,

                    则根据 LC_COLLATE 设置的语言排序方式进行比较, 例如,汉字会根据拼音进行比较。





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值