现在的位置: 首页 > 综合 > 正文

linux c程序开发新员工培训——每日一题

2012年11月11日 ⁄ 综合 ⁄ 共 1540字 ⁄ 字号 评论关闭

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函数的时候,会将缓冲区的内容读出。

写一个小程序,测试一下,看看这个缓冲区默认是多大。

另外,调用系统函数,更改缓冲区的大小,并测试更改结果。

抱歉!评论已关闭.