2010年我们公司研发新员工培训相对09年来说,最大的改变就是增加注重提升编程能力。方法就是每日完成一个编程题目,每个题目设计一个技术的。下面是这些题目:
实现一个链表,完成链表的插入,查找,删除
typedef struct _FIFO_M{
void *pdata;
struct _FIFO_M *pNext;
}FIFO_M,* pFIFO_M;
typedef struct _FIFO{
pFIFO_M head;
pFIFO_M tail;
pFIFO_M pos;
int mcount;//节点个数
int max_count;//节点最大个数。
}FIFO,* pFIFO;
FIFO g_fifo;
int Fifo_Add(pFIFO mfifo,void * pdata);/*向队列中压入一数据,添加到队列头部*/
int Fifo_Push(pFIFO mfifo,void * pdata);/*向队列中压入一数据,添加到队列尾部*/
void * Fifo_Pull(pFIFO mfifo); /*将队列头部成员出列*/
已有文件A.txt,B.txt。
A的内容:abcd.
B的内容:123456。
要求:
调用Linux文件操作系统函数:
1、读出文件B的内容,缓存起来。
2、读出文件A的内容,以覆盖的方式写入文件B中。
3、将上面缓存的B的文件的内容以追加的方式写入文件B中。
最终B的内容为:
abcd123456
字符串操作:
主要目的是熟练掌握Linux字符串操作函数。
1、有字符串:"21adf-458/dsf*d34;sd",以-、/、*、;是个字符为分隔符,将上面的字符串分解为多个个字符串:
21adf,458,dsf,d34,sd。
2、一个int类型值(大小未知):int iMsgType = 1000;要求,构造一个字符串,字符串的内容为:"receive msg from cscf,msg type is [1000]"
3、有字符串:"<count>5000</count>",获取<count>和</count>之间的数值(值大小未知),并输出(打印)为int类型的值。
不要使用系统函数,实现strcpy和strncpy功能。具体功能参加Linux系统函数。
今天主要是系统时间的操作:
1、获取当前系统时间,并分别打印出当前时间的:年,月,日,时,分,秒,毫秒,微妙。
2、分别以下面格式打印出当前的时间:2010-04-15 15:12:12;
时间进一步操作
1、已知两个时间字符串:2010-04-15 15:12:12和2010-04-15 15:15:12,如何计算他们之间相差的毫秒数。
2、有一个int类型变量,初始值为0,要求每个10ms自增1,一直增加到10000。总共用时约10s,要求时间误差控制在10ms以内。
此次仍然是操作系统时间。
1、使用系统函数strftime获取当前时间的字符串,格式为:2010-04-15 15:12:12。
2、使用系统函数strptime根据字符串2010-04-15 15:12:12和2010-04-15 15:15:12获取时间的结构体:struct tm,并且根据此结构体获取两个时间相差的毫秒数。
今天的题目是linux 网络编程——UDP
1、建立两个UDPsocket——A和B(非阻塞模式)。
2、将下面的内容从其中的一个A socket发送到另外一个B socket,并且将B收到的内容打印出来。
3、B再将收到的消息发回给A。A收到后打印出来。
UDP收包的时候,会首先放在一个缓冲区中,调用recvfrom函数的时候,会将缓冲区的内容读出。
写一个小程序,测试一下,看看这个缓冲区默认是多大。
另外,调用系统函数,更改缓冲区的大小,并测试更改结果。