linux系统函数总结(一)

realpath:

#include

函数原型:char *realpath(const char *path, char *resolved_path);

返回值: 成功则返回指向resolved_path的指针,失败返回NULL,错误代码存于errno

功能:用来将参数path所指的相对路径转换成绝对路径,然后存于参数resolved_path所指的字符串数组指针中。

 

fopen:

#include

函数原型: FILE *fopen(const char *filename, const char *mode);

filename-- 这是 C 字符串,包含了要打开的文件名称。

mode-- 这是 C 字符串,包含了文件访问模式。

函数功能:使用给定的模式 mode 打开 filename 所指向的文件。文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回 NULL,并把错误代码存在 error 中。该函数位于C 标准库中。

 

fseek:

#include

函数原型:int fseek(FILE *stream, long offset, int fromwhere);

函数功能:函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset取值大于等于2*1024*1024*1024,即long的正数范围2G),则不改变stream指向的位置,函数返回一个非0值。

ftell:

#include

函数原型:long ftell(FILE *stream);

函数功能:用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。

 

fread:

#include

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

buffer:用于接收数据的内存地址

size:要读的每个数据项的字节数,单位是字节

count:要读count个数据项,每个数据项size个字节.

stream:输入流

函数功能:返回真实读取的项数,若大于count则意味着产生了错误。另外,产生错误后,文件位置指示器是无法确定的。若其他streambuffer为空指针,或在unicode模式中写入的字节数为奇数,此函数设置errnoEINVAL以及返回0.

 

fwrite:

#include

函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

ptr-- 这是指向要被写入的元素数组的指针。

size-- 这是要被写入的每个元素的大小,以字节为单位。

nmemb-- 这是元素的个数,每个元素的大小为 size 字节。

stream-- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。

函数功能:向指定的文件中写入若干数据块,如成功执行则返回实际写入的数据块数目。该函数以二进制形式对文件进行操作,不局限于文本文件。

 

feof:

#include

函数原型:int feof(FILE *stream);

Streamfile结构的指针。

函数功能:检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0(即,文件结束:返回非0值,文件未结束,返回0值),文件结束符只能被clearerr()清除。(这里的检测流上的文件结束符就相当于声卡检测电流信号的一个过程)。

 

fgets

#include

函数原型:char *fgets(char *str, int n, FILE *stream);

str-- 这是指向一个字符数组的指针,该数组存储了要读取的字符串。

n-- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。

stream-- 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。

函数功能:从指定的流 stream 读取一行,并把它存储在str所指向的字符串内。当读取(n-1)个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

返回值:如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。如果发生错误,返回一个空指针。

  1. 在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则stream保持原来的内容,返回NULL
  2. 如果发生读入错误,error指示器被设置,返回NULLstream的值可能被改变。

 

sscanf:

#include

函数原型:int sscanf(     const char *buffer,     const char *format, [ argument ] ...   ); 

Buffer:存储的数据

Format:窗体控件字符串:

可以是一个或多个 {%[*] [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 表示满足该条件的被过滤掉,不会向目标参数中写入值

失败返回0 ,否则返回格式化的参数个数

7、如果读取的字符串,不是以空格来分隔的话,就可以使用%[]。

Argument:可选自变量

函数功能:

读取格式化的字符串中的数据。函数将返回成功赋值的字段个数;返回值不包括已读取但未赋值的字段个数。 返回值为 0 表示没有将任何字段赋值。 如果在第一次读取之前到达字符串结尾,则返回EOF。如果buffer或format是NULL调用指针,无效参数处理程序,如中所述参数验证。 如果允许继续执行,则这些函数返回 -1 并将errno设置为EINVAL。

成功则返回参数数目,失败则返回-1,错误原因存于errno中。

 

gettimeofday

#include

函数原型:int gettimeofday(struct timeval*tv, struct timezone *tz);

其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果:

struct timezone{

int tz_minuteswest;/*格林威治时间往西方的时差*/

int tz_dsttime;/*DST 时间的修正方式*/

}

timezone 参数若不使用则传入NULL即可。

而结构体timeval的定义为:

struct timeval{

long int tv_sec; // 秒数

long int tv_usec; // 微秒数

}

它获得的时间精确到微秒(1e-6 s)量级。

函数功能:

是计算机函数,使用C语言编写程序需要获得当前精确时间(197011日到现在的时间),或者为执行计时,可以使用gettimeofday()函数。在一段代码前后分别使用gettimeofday可以计算代码执行时间:

 

time:

#include

函数原型:time_t time(time_t *calptr)

函数功能:返回1970-1-1, 00:00:00以来经过的秒数。结果可以通过返回值,也可以通过参数得到。

函数成功:秒数,从1970-1-1,00:00:00 可以当成整型输出或用于其它函数

函数失败:-1

 

snprintf

#include

函数原型:int snprintf(char* dest_str,size_t size,const char* format,...);

函数功能:

将可变个参数(...)按照format格式化成字符串,然后将其复制到str中。

(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0')

(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0'),返回值为欲写入的字符串长度。

若成功则返回预写入的字符串长度,若出错则返回负值

snprintf的返回值不同,sprintf的返回值是成功写入的字符串长度,此处需要谨慎处理。

 

ftell:

#include

函数原型:long int ftell(FILE *stream)

Stream:指向file对象的指针,该file对象标识了流。

功能:返回给定流 stream 的当前文件位置。该函数返回位置标识符的当前值。如果发生错误,则返回 -1L,全局变量 errno 被设置为一个正值。

你可能感兴趣的:(Linux,Linux系统编程)