Chinaunix首页 | 论坛 | 博客
  • 博客访问: 245706
  • 博文数量: 68
  • 博客积分: 2802
  • 博客等级: 少校
  • 技术积分: 614
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-11 15:38
文章存档

2013年(3)

2012年(15)

2011年(21)

2010年(29)

我的朋友

分类: C/C++

2011-10-17 17:03:01

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 传给的参数不正确。
阅读(1120) | 评论(0) | 转发(0) |
0

上一篇:Python 设置系统默认编码

下一篇:Termios

给主人留下些什么吧!~~