fgets
头文件: #include
函数原型:char *fgets(char *s, int size, FILE *stream);
返回值: 成功时s指向哪返回的指针就指向哪,出错或者读到文件末尾时返回NULL。
说明: fgets从指定的文件中读一行字符到调用者提供的缓冲区中。
gets
头文件: #include
函数原型:char *gets(char *s);
返回值: 成功时s指向哪返回的指针就指向哪,出错或者读到文件末尾时返回NULL。
说明: gets从标准输入读一行字符到调用者提供的缓冲区中。
popen
头文件: #include
函数原型: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
函数原型:int pclose(FILE *stream);
返回值: 若成功返回shell的终止状态(也即子进程的终止状态),若出错返回-1,错误原因存于errno中。
说明: 见"popen"说明。
strlen
头文件: #include
函数原型:extern int strlen(char *s);
返回值: 返回s的长度,不包括结束符NULL。
说明: 计算字符串s的(unsigned int型)长度。
atof
头文件: #include
函数原型: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
函数原型:int atoi(const char *nptr);
返回值: 返回整型数。否则,返回零。
说明: 数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,
之后检测到非数字(包括结束符 \0) 字符时停止转换。
memcpy
头文件: #include
函数原型:extern void *memcpy(void *dest, void *src, unsigned int count);
返回值: 函数返回指向dest的指针。
说明: 由src所指内存区域复制count个字节到dest所指内存区域,src和dest所指内存区域不能重叠。
memset
头文件: #include
函数原型:extern void *memset(void *buffer, int c, int count);
返回值: 其返回值为指向buffer的指针。
说明: 把buffer所指内存区域的前count个字节设置成字符c,
它是对较大的结构体或数组进行清零操作的一种最快方法。
sprintf
头文件:#include
函数原型:int sprintf(char *buffer, const char *format [, argument] … );
返回值:字符串长度 strlen。
说明:把格式化的数据写入某个字符串,注意可变参数的使用。
strchr
头文件: #include
函数原型:extern char *strchr(char *str,char character);
返回值: 返回指向第一次出现字符character位置的指针,如果没找到则返回NULL。
说明: 从字符串str中寻找字符character第一次出现的位置,
str为一个字符串的指针,character为一个待查找字符。
scanf
头文件: #include
函数原型: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
函数原型: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
函数原型:extern int isspace(int c);
返回值: 当c为空白符时,返回非零值,否则返回零。
空白符指空格、水平制表、垂直制表、换页、回车和换行符。 说明: 判断字符c是否为空白符。
strcmp
头文件: #include
函数原型: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
函数原型: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 设置的语言排序方式进行比较, 例如,汉字会根据拼音进行比较。