存档

‘C/C++’ 分类的存档

哲学家就餐问题(C语言)

2013年5月2日 没有评论

哲学家就餐问题
有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在桌上有五个碗和五只筷子,他们的生活方式是思考和进餐。平时,哲学家进行思考,饥饿时就便试图去他们左右的筷子来就餐。只有在他拿到两个筷子时才能就餐。

服务生解法
所有哲学家想吃饭都必须告诉服务生,吃完饭同时也告诉服务生。由服务生根据筷子的使用情况决定是否准予吃饭。
下载:waiter.c 

编译: gcc waiter.c -lpthread -o waiter
运行:./waiter

分类: C/C++, Linux 标签:

strncpy与strncmp

2012年9月17日 没有评论

strncmp与strcmp
二者都字符串比较,前者有限定最多只能比较n个字符
如:

  1. strcmp(“hello”,“hel”);    //none zero
  2. strncmp(“hello”,“hel”,3); //zero

strncmp与memcmpy
二者都限定最多比较n个字符,但前者如果遇到’\ 0’结束比较
如:

  1. strncmp(“ababc”,“abcba”,6); //zero
  2. memcmp(“ababc”,“abcba”,6);  //none zero

strncpy与strcpy
二者均为字符串复制,但前者限定最多只能复制n个字符(不会自动追加’\ 0’)
如:

  1. char b[]=“abcdef”;
  2. strcpy(b,“hello”);     //b: hello\ 0
  3. strncpy(b,“hello”,5);  //b: hellof
  4. strcpy(s,d)等价于strncpy(s,d,strlen(s)+1);

strncpy与memcpy
二者均为固定内存复制,但前者如果遇到\ 0会停止复制
如:

  1. char b[7]=“hello”;
  2. char d[7] = {0};
  3. strncpy(d,b,7); //d: “he\ 0\ 0\ 0\ 0\ 0”
  4. memcpy(d,b,7);  //d: “he\ 0llo\ 0”
分类: C/C++, Linux 标签:

VirtualBox从U盘启动方法

2011年12月25日 1 条评论

#进入命令行

#获取磁盘信息(这个最关键)

#打开d:/diskdrive.html ,查看DeviceID栏,获取到你的U盘DeviceID,如\\.\PHYSICALDRIVE1

#为U盘创建启动文件

# 添加磁盘d:\UsbDisk.vmdk, F12启动虚拟机,选择这个磁盘即可磁盘

分类: C/C++, Linux, Win32, 翻译, 计算机网络, 转载 标签: