fgets()
功能:从流中读一行或指定个字符
原型:char *fgets(char *s, int n, FILE *stream);
说明:从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。
形参注释:*s结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针
-------------------------------------------------------------------------------------------------------------------------------------------
sizeof
sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。
由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。
具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:
数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
类型——该类型所占的空间大小;
对象——对象的实际占用空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。
**************
strlen()
strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。
它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
------------------------------------------------------------------------------------------------------------------------------------------
strcpy()原型声明:extern char *strcpy(char *dest,char *src);
头文件:
功能:把src所指由NUL结束的字符串复制到dest所指的中。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串.
返回指向dest的指针。
-------------------------------------------------------------------------------------------------------------------------------------------
strstr
()
功 能: 在字符串中查找指定字符串的第一次出现
用 法: char *strstr(char *str1, char *str2);
strstr原型:extern char *strstr(char *haystack, char *needle);
头文件:#include
功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。
说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。
-------------------------------------------------------------------------------------------------------------------------------------------
strchr()
原型:extern char *strchr(const char *s,char c);
const char *strchr(const char* _Str,int _Val)
char *strchr(char* _Str,int _Ch)
头文件:#include
功能:查找字符串s中首次出现字符c的位置
说明:返回首次出现c的位置的指针,如果s中不存在c则返回NULL。
返回值:Returns the address of the first occurrence of the character in the string if successful, or NULL otherwise
-------------------------------------------------------------------------------------------------------------------------------------------
open()
作用:打开和创建文件。
简述:
#include
int open(const char *pathname,int oflag,... /* mode_t mode */);
返回值:成功则返回,否则返回 -1
对于 open 函数来说,第三个参数(...)仅当创建新文件时(即 使用了O_CREAT
时)才使用,用于指定文件的访问权限位(access permission bits)。pathname 是待打开/创建文件的路径名(如
C:/cpp/a.cpp);oflag 用于指定文件的打开/创建模式,这个参数可由以下常量(定义于 fcntl.h)通过逻辑或构成。
O_RDONLY 只读模式
O_WRONLY 只写模式
O_RDWR 读写模式
打开/创建文件时,至少得使用上述三个常量中的一个。
以下常量是选用的:
O_APPEND 每次写操作都写入文件的末尾
O_CREAT 如果指定文件不存在,则创建这个文件
O_EXCL 如果要创建的文件已存在,则返回 -1,并且修改 errno 的值
O_TRUNC 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即将其长度截短为0)
O_NOCTTY 如果路径名指向终端设备,不要把这个设备用作控制终端。
O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O设置为非阻塞模式(nonblocking mode)
以下三个常量同样是选用的,它们用于同步输入输出
O_DSYNC 等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待文件属性更新。
O_RSYNC read 等待所有写入同一区域的写操作完成后再进行
O_SYNC 等待物理 I/O 结束后再 write,包括更新文件属性的 I/O
open 返回的文件描述符一定是最小的未被使用的描述符。
如果 NAME_MAX(文件名最大长度,不包括'\0')是
14,而我们想在当前目录下创建文件名长度超过 14 字节的文件,早期的 System V 系统(如 SVR2)会截断超出部分,只保留前 14
个字节;而由 BSD 衍生的(BSD-derived)系统会返回错误信息,并且把 errno 置为 ENAMETOOLONG。
POSIX.1 引入常量 _POSIX_NO_TRUNC
用于决定是否截断长文件名/长路径名。如果_POSIX_NO_TRUNC 设定为禁止截断,并且路径名长度超过 PATH_MAX(包括
'\0'),或者组成路径名的任意文件名长度超过 NAME_MAX,则返回错误信息,并且把 errno 置为 ENAMETOOLONG。
-------------------------------------------------------------------------------------------------------------------------------------------
inet_addr()
声明:in_addr_t inet_addr(const char *cp);
返回1:成功,输入字符串有效 返回0:输入字符串有错
所在头文件:
//end linux下
简述:将一个点间隔地址转换成一个in_addr
基本注释:
本函数解释cp参数中的字符串,这个字符串用Internet的“.”间隔格式表示一个数字的Internet地址。返回值可用作Internet地址。所有Internet地址以网络字节顺序返回(字节从左到右排列)。
Internet地址用“.”间隔的地址可有下列几种表达方式:
a.b.c.d,a.b.c,a.b,a
当四个部分都有定值时,每个都解释成一个字节数据,从左到右组成Internet四字节地址。请注意,当一个Internet地址在Intel机器上表示成一个32位整型数时,则上述的字节为“d.c.b.a”。这是因为Intel处理器的字节是从右向左排列的。
请注意:只有Berkeley支持下述表达法,Internet其余各处均不支持。考虑到与的兼容性,应按规定进行使用。
对一个三部分地址,最后一部分解释成16位数据并作为网络地址的最右两个字节。这样,三部分地址便很容易表示B组网络地址,如“128.net.host”.
对一个两部分地址,最后一部分解释成24位数据并作为网络地址的最右三个字节,这样,两部分地址便很容易表示C组网络地址,如“net.host”。
对仅有一个部分的地址,则将它的值直接存入网络地址不作任何字节的重组。
返回值:
若无错误发生,inet_addr()返回一个无符号长整型数,其中以适当字节顺序存放
Internet地址。如果传入的字符串不是一个合法的Internet地址,如“a.b.c.d”地址中任一项超过255,那么inet_addr()
返回INADDR_NONE。在IP只有一部分时(即没有 ”.“
时),IP的字符串如果只由数字组成,inet_addr()不检查数字是否大于255。
-------------------------------------------------------------------------------------------------------------------------------------------
htons()
简述:
将主机的无符号短整形数转换成网络。
#include
u_short PASCAL FAR htons( u_short hostshort);
hostshort:主机字节顺序表达的16位数。
注释:
本函数将一个16位数从主机字节顺序转换成网络字节顺序。
返回值:
htons()返回一个网络字节顺序的值。
相关:
其反过程函数是:ntohs(),即将网络字节顺序转换成16位主机的无符号整型数
-------------------------------------------------------------------------------------------------------------------------------------------
htonl()
简述:
将主机的无符号长整形数转换成网络字节顺序。
#include
u_long PASCAL FAR htonl( u_long hostlong);
hostlong:主机字节顺序表达的32位数。
注释:
本将一个32位数从主机字节顺序转换成网络字节顺序。
返回值:
htonl()返回一个网络字节顺序的值。
相关:
其反过程函数是:ntohl(),即将网络字节顺序转换成32位的主机的无符号整型数
-------------------------------------------------------------------------------------------------------------------------------------------
inet_ntoa()
linux下:
函数声明:char *inet_ntoa (struct in_addr);
返回:点分十进制的字符串指针。失败为NULL
所在头文件:
//end linux 下
函数功能:将成“.”点隔的字符串格式。
所需库: winsock.h
相关:
inet_aton()是一个改进的方法来将一个字符串IP地址转换为一个32位的网络序列IP地址。函数概要如下:头文件:
#include
#include
#include
完整描述:
int inet_aton(const char *string, struct *addr);
参数描述:
1 输入参数string包含表示的IP地址。
2 输出参数addr是将要用新的IP地址更新的结构。
返回值:
如果这个函数成功,函数的返回值非零。如果输入地址不正确则会返回零。使用这个函数并没有错误码存放在errno中,所以他的值会被忽略。
-------------------------------------------------------------------------------------------------------------------------------------------
read()
linux 下 read(由已打开的文件读取数据)
相关函数
readdir,write,fcntl,close,lseek,readlink,fread
表头文件
#include
定义函数
s read(int fd,void * buf ,size_t count);
函数说明
会把参数fd 所指的文件传送count个字节到buf指针所指的内存中。若参数count为0,则read为实际读取到的字节数,如果返回0,表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动。
附加说明
如果顺利read()会返回实际读到的字节数,最好能将返回值与参数count
作比较,若返回的字节数比要求读取的字节数少,则有可能读到了文件尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。当有错
误发生时则返回-1,错误代码存入errno中,而文件读写位置则无法预期。
错误代码
EINTR 此调用被信号所中断。
EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。
EBADF 参数fd 非有效的文件描述词,或该文件已关闭。
-------------------------------------------------------------------------------------------------------------------------------------------
write()
linux 下write(将数据写入已打开的文件内)相关函数 open,read,fcntl,close,lseek,sync,fsync,fwrite表头文件 #include定义函数 s write (int fd,const void * buf,size_t count);函数说明 write()会把参数buf所指的内存写入count个字节到参数fd所指的文件内。当然,文件读写位置也会随之移动。返回值 如果顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中。错误代码 EINTR 此调用被信号所中断。
EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。
EADF 参数fd非有效的文件描述词,或该文件已关闭。
-------------------------------------------------------------------------------------------------------------------------------------------
recvfrom()
recvfrom函数(经socket接收数据):
函数原型:ssize_t recvfrom(int sockfd,void *buf,int len,unsigned int flags, struct sockaddr *from,socket_t *fromlen);
ssize_t 相当于 int,socket_t 相当于int ,这里用这个名字为的是提高代码的自说明性。
相关函数 recv,recvmsg,send,sendto,socket
函数说明:
用
来接收远程主机经指定的socket传来的数据,并把数据传到由参数buf指向的内存空间,参数len为可接收数据的最大长度.参数flags一般设0,
其他数值定义参考recv().参数from用来指定欲传送的网络地址,结构sockaddr请参考bind()函数.参数fromlen为
sockaddr的结构长度.
返回值:成功则返回接收到的字符数,失败返回-1.
错误代码
EBADF 参数s非合法的socket处理代码
EFAULT 参数中有一指针指向无法存取的内存空间。
ENOTSOCK 参数s为一文件描述词,非socket。
EINTR 被信号所中断。
EAGAIN 此动作会令进程阻断,但参数s的socket为不可阻断。
ENOBUFS 系统的缓冲内存不足
ENOMEM 核心内存不足
EINVAL 传给的参数不正确。
阅读(1127) | 评论(0) | 转发(0) |