2009年4月12日星期日

Recently, I learn C.

最近,学习的C语言做一个总结。
在不同系统里,数据类型是不同的。
在BSD中,有 char short int u_char u_short u_int
在POSIX系统里,有int8_t int16_t int32_t u_int8_t u_int16_t u_int32_t
在C语言里面,有 char short int unsigned char unsigned short unsigned int
1byte
2byte 4byte 1byte 2byte 4byte

在这个头文件中#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong); 将主机的字节顺序变换为计算机网络字节顺序,
其数据类型为long
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);将计算机网络字节顺序变换为主机的字节顺序,
其数据类型为long
uint16_t ntohs(uint16_t netshort);

在 #include
<string.h>
int memcmp(const void *s, const void *c, size_t n);
用于将一个从地址s和地址c开始的n个字节的区域,一个一个地分别进行比较!
void *memcpy(void *restrict, const void *restrict, size_t);
把一个从后一个地址开始的n个自己的区域,拷贝到前一个开始的区域中。
void *memmove(void *, const void *, size_t);
void *memset(void *, int, size_t);
使用值n来设置一个从地址s开始的c个字节的区域。

刚刚看完边疆的blog,里面提到了
curses.h我就顺便写一下了。
关于编译的时候要
gcc curses.c -lncurses
这是一个对屏幕操作的库函数
curses.h,用起来还是可以的!不错!

为了能够在应用程序中改变套接字的设置,可以执行setsockopt系统调用。
发送缓冲区的设定
setsockopt(s, SOL_SOCKET, SO_SNDBUF, (char *)&size, sizeof(size));
接收缓冲区的设定
setsockopt(s, SOL_SOCKET, SO_RCVBUF, (char *)&size, sizeof(size));
使用这些函数的时候必须要有sys/types.h和sys/socket.h头文件。
值得注意!
/tmp/cc2Mk4cn.o: In function `main':
p*s.c:(.text+0x69): warning: the `gets' function is dangerous and should not be used.

time