popen()—建立管道I/O头文件:#include <stdio.h> 定义函数:FILE * popen(const char * command, const char * type); 函数说明:popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c 来执行参数command 的指令。 参数type 可使用 "r"代表读取,"w"代表写入。依照此type 值,popen()会建立管道连到子进程的标准输出设备或标准输入设备,然后返回一个文件指针。随后进程便可利用此文件指针来读取子进程的输出设备或是写入到子进程的标准输入设备中。 pclose()—关闭管道I/O头文件:#include <stdio.h> 定义函数:int pclose(FILE * stream); 函数说明:pclose()用来关闭由popen 所建立的管道及文件指针. 参数stream 为先前由popen()所返回的文件指针. 返回值:返回子进程的结束状态. 如果有错误则返回-1, 错误原因存于errno 中. strtoul()—将字符串转换成无符号长整型数头文件:#include <stdlib.h> 定义函数:unsigned long int strtoul(const char *nptr, char **endptr, int base); 函数说明: strtoul()会将参数nptr 字符串根据参数base 来转换成无符号的长整型数。参数base 范围从2 至36, 或0;参数base 代表采用的进制方式, 如base 值为10 则采用10 进制, 若base 值为16 则采用16 进制数等. 当base 值为0 时则是采用10 进制做转换, 但遇到如'0x'前置字符则会使用16 进制做转换. 一开始strtoul()会扫描参数nptr 字符串, 跳过前面的空格字符串, 直到遇上数字或正负符号才开始做转换, 再遇到非数字或字符串结束时('\0')结束转换, 并将结果返回. 若参数endptr 不为NULL, 则会将遇到不合条件而终止的nptr 中的字符指针由endptr 返回. 返回值:返回转换后的长整型数, 否则返回ERANGE 并将错误代码存入errno 中. 附加说明:ERANGE 指定的转换字符串超出合法范围. atoi()——把字符串转换成整型数itoa()——把一整数转换为字符串itoa(num, str, 10); itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用 的基数。在上例中,转换基数为10。10:十进制;2:二进制... itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。是Windows平台下扩展的,标准库中有sprintf,功能比这个更强,用法跟printf类似 char str[255]; sprintf(str, "%x", 100); //将100转为16进制表示的字符串。 snprintf() int snprintf(char *str, size_t size, const char *format, ...); 将可变个参数(...)按照format格式化成字符串,然后将其复制到str中 (1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0'); (2) 如果格式化后的字符串长度 => size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0') 函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。 注意: snprintf()函数的返回值不是实际写入的长度,二十待写入字符串的长度! eg: if (snprintf(fullpath, sizeof(fullpath), “%s/%s”, path, filename) >= sizeof(fullpath)) 返回值是filename的长度。 |
|