Linux(ubuntu)
文章平均质量分 58
张佳琪
这个作者很懒,什么都没留下…
展开
-
Makefile模版
src = $(wildcard $(srcpath)*.c)obj = $(patsubst $(srcpath)%.c,$(objpath)%.o, $(src))target = appsrcpath = ../src/objpath = ../obj/incpath = ../inc/CC = gccCPPFLAGS = -ICFLAGS =原创 2014-04-02 15:01:08 · 468 阅读 · 0 评论 -
三大排序算法实现(冒泡,选择,快排)
#include void bubble_sort(int *array,int len){ int i,j,tmp; for(i = 0; i < len; i++) { for(j = 0; j < len - i - 1; j++) { if(array[j] > array[j + 1]) { tmp = array[j]; array[j]原创 2013-10-23 18:39:27 · 573 阅读 · 0 评论 -
cp命令的简单实现(可拷贝目录)
#include #include #include #include #include #include #include #define MAX_PATH 1024void dirwalk(char *srcdir,char *destdir,void (*fcn)(char *,char *));void fsize(char *srcname,char *destna原创 2013-10-23 17:06:58 · 713 阅读 · 0 评论 -
atoi函数的简单实现
#include #include #include #define N 100int my_atoi(char *src){ int flag = 0; int num = 0; if(src[0] == '-') { flag = 1; src++; } while(*src) { if(isdigit(*src)) { num *= 10;原创 2013-10-22 21:36:50 · 461 阅读 · 0 评论 -
连续拷贝文件,输入$exit退出(管道实现)
#include #include #include #include #include #include #include #define MAXLINE 1024int main(int argc,char *argv[]){ int i = 0,n,fd1,fd2; int fd[2] = {0}; char buf[MAXLINE] = {0}; char s原创 2013-10-29 16:56:13 · 515 阅读 · 0 评论 -
memmove的简单实现
void *memmove(void *dest,const void *src,size_t n){ char temp[n]; int i; char *d = dest; const char *s = src; for(i = 0; i < n; i++) temp[i] = s[i]; for(i = 0;i < n; i++) d[i] = temp[i];原创 2013-10-22 21:29:07 · 411 阅读 · 0 评论 -
约瑟夫环(链表实现)
#include #include typedef struct node *link;struct node{ unsigned char item; link next;};static link head = NULL;link make_node(unsigned char item){ link p = (struct node *)malloc原创 2013-10-22 08:31:06 · 420 阅读 · 0 评论 -
约瑟夫环(数组模拟实现)
#include #include const int MAX_NUM = 300;int aLoop[MAX_NUM + 10];int main(void){ int i,n,m; while(1) { scanf("%d%d",&n,&m);//n总人数,m要出圈的猴子数 if(n == 0) break; for(i = 0; i < n; i++)原创 2013-10-21 11:43:25 · 532 阅读 · 0 评论 -
链表的基本操作
#include #include typedef struct node *link;struct node{ unsigned char item; link next;};static link head = NULL;link make_node(unsigned char item){ link p = (struct node *)malloc(sizeof(*原创 2013-10-21 19:51:59 · 466 阅读 · 0 评论 -
strstr函数的简单实现
#include #include char *my_strstr(char *str,char *substr){ int len1 = strlen(str); int len2 = strlen(substr); if(!len2) return (char *)str; while(len1 >= len2) { len1--; if(!memcmp(str,原创 2013-10-21 20:29:17 · 593 阅读 · 0 评论 -
笔试小题
struct s1{char *ptr,ch;union{short a,b;unsigned int c;};struct s1 *next;};s1这个结构体大小为4字节 + 4字节 + 4字节 + 4字节 = 16字节(4字节对齐)struct s2{char a;struct s1 b;short c;};s2这个结构体大原创 2013-10-21 20:14:38 · 439 阅读 · 0 评论 -
位运算总结(1)
1.判断int型变量a是奇数还是偶数a & 1= 0 是偶数a & 1 = 1 是奇数2.取int型变量a的第k位(k = 0,1,2,....,sizeof(int))a >> k & 1;3.将int型的变量a的第k位清0a = a & ~(1 4.将int型的变量a的第k位置1a = a | (1 5.将int类型的变量循环左移k位a = a原创 2013-10-23 19:34:25 · 577 阅读 · 0 评论 -
strtok函数和strtok_r函数的简单实现
#include #include char *mystrtok(char *str, const char *delim){ char *s_begin, *s_end; static char *savep = ""; //"root:0::/root/bash:/usr/bin"; s_begin = (str != NULL) ? str : sav原创 2013-10-23 20:35:26 · 948 阅读 · 0 评论 -
Linux驱动笔记
一、描述内存分配方式及他们的区别(1)从静态存储区分配。内存在程序编译时就已经分配好,这块内存在整个程序运行时期都在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内部局部变量的存储单元都能在栈上创建。函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。(3)从堆上分配,称为动态内存分配。程序在运行的时候用malloc或者new申请任意多少的原创 2013-12-30 14:08:09 · 511 阅读 · 0 评论 -
Linux驱动笔记(1)
模块退出前的__exit宏表示,这个函数会被链接到.exit.text段,这个段的代码只会在模块被移除的时候执行module_init宏把akae_init函数别名为init_module的模块入口函数。module_exit宏表示把akae_exit函数别名为cleanup_module的模块退出函数。模块中都可以指定这两个宏,也可以都不使用这两个宏,但是如果仅仅调用module_i原创 2013-12-30 14:06:53 · 478 阅读 · 0 评论 -
sqlite3的一些常用语句
sqlite3官网地址:www.sqlite.org源上安装:sudo apt-get install libsqlite3-dev sqlite3SQL:1、创建表:create table student(id integer primary key, name text, age integer, score integer);2、查询表的内容:select *原创 2013-12-07 15:08:13 · 746 阅读 · 0 评论 -
创建10个线程创建1.txt - 10.txt,然后合并到data.txt,不需要创建线程11
#include #include #include #include #include int counter = 0;int sig = 1,fdx = -1;#define MAXNUMBER 10pthread_mutex_t counter_mutex = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t counter_cond原创 2013-11-05 20:53:56 · 577 阅读 · 0 评论 -
线程条件变量应用(消费者和生产着模型)
#include #include #include #include struct msg{ struct msg *next; int num;};struct msg *head = NULL;pthread_cond_t has_product = PTHREAD_COND_INITIALIZER;pthread_mutex_t lock = PTHRE原创 2013-11-05 21:16:03 · 563 阅读 · 0 评论 -
哲学家就餐问题
哲学家就餐问题。这是由计算机科学家Dijksta提出的经典死锁场景问题描述:有5个哲学家,这些哲学家只做两件事--思考和吃饭,他们思考的时候不需要任何共享资源,但是吃饭的时候必须使用餐具,而餐具是有限的。原版的故事里,餐具是叉子,吃饭的时候要用两把叉子把面条从碗里捞出来。很显然把叉子换成筷子更合理,所以:一个哲学家需要两根筷子才能吃饭。现在引入问题:这些哲学家很穷,只买的起5根筷子。他们做原创 2013-11-05 20:49:28 · 1020 阅读 · 0 评论 -
创建10个线程创建1.txt - 10.txt,然后创建线程11 合并到data.txt
#include #include #include #include #include #include int counter = 0;#define MAXNUMBER 10pthread_mutex_t counter_mutex = PTHREAD_MUTEX_INITIALIZER;void *creat_file(void *arg){ char buf[原创 2013-11-04 19:21:53 · 530 阅读 · 0 评论 -
CP命令的较完整的实现
#include #include #include #include #include #include #include #include #include void cp_file(const char *src,const char *dest,mode_t mode){ char buf[1024] = {0}; int n; int fd1 = open原创 2013-11-02 20:29:28 · 604 阅读 · 0 评论 -
信号实现文件创建(1.txt - 10.txt),然后合并到data.txt
#include #include #include #include #include #include #include #include pid_t pid;void sig_child(int signo){ static int number = 1; int i = 0,j = 0,n; char buf[10] = {0}; //printf("chi原创 2013-11-02 20:25:04 · 566 阅读 · 0 评论 -
位运算小结(2)
12.乘法运算转换成位运算:a * (2 ^ n) a 13.除法运算转换成位运算:a / (2 ^ n) a >> n;14. a % 2 a & 1;15.if (x == a)x = b;else x = a;等价于:x = a ^ b ^ n;16. x的相反数 (~x +1)17.两个数相乘int mul(int a,int b原创 2013-10-23 20:17:29 · 602 阅读 · 0 评论 -
笔试小题
输出 x = 3, y = 2#include int main(void){ int x = 1,y; y = x++ + x++; printf("x = %d, y = %d\n",x,y); return 0;}原创 2013-10-21 19:54:26 · 476 阅读 · 0 评论 -
strlen实现
int my_strlen(const char *str){ int i = 0; while(str[++i]); return i; }原创 2013-10-21 11:32:58 · 363 阅读 · 0 评论 -
泛型算法的简单应用
#include typedef struct{ const char *name; int score;}student_t;typedef int (*cmp_t)(void *,void *);void *max(void *data[], int num,cmp_t cmp){ int i; void *temp = data[0]; for(i = 1; i原创 2013-10-21 15:09:06 · 508 阅读 · 0 评论 -
strcpy简单实现
char *my_strcpy(char *dest,char *src){ int i; for(i = 0; src[i]; i++) dest[i] = src[i]; dest[i] = '\0'; return dest;}原创 2013-10-21 11:31:40 · 449 阅读 · 0 评论 -
memset简单实现
void *my_memset(void *s,int c,int n){ int i; for(i = 0; i < n; i++) *((char *)(s + i)) = c; return s;}原创 2013-10-21 10:06:51 · 405 阅读 · 0 评论 -
Myshell解析器
功能:实现shell命令的解析,能够将命令行输入内容进行解析。获取命令名称、参数并对重定向符进行解析例如:若命令行输入为:ls -al则应解析出:命令为-ls,参数为--al若命令行输入内容为:ls - al > out则应该解析出:命令行为-ls,参数为---al,重定向输出文件为:out#include #include #define MAXARG 8//参原创 2013-10-20 15:50:57 · 509 阅读 · 0 评论 -
打印单链表的倒数第k个结点
link find_reverse(int k){ int i = 0; link p = NULL; link q= NULL; p = head; q = head; for(i = 0; i next); if(p == NULL) return NULL; for(;p;p = p->next,q = q->next); return q;}原创 2013-10-18 09:48:10 · 480 阅读 · 0 评论 -
简易版学生成绩管理系统(数组版和链表版都有)
系统主要界面:1.Display all students' info2.Sort by average3.Insert a new info4.Delete a record5.Quit退出时,将学生的信息写入到student的文件当中操作系统:linux(ubuntu)包含Makefile原创 2013-10-09 20:01:42 · 1251 阅读 · 0 评论 -
Linux命令(3)
wc:wc [option]... [FILE]...该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。option的主要参数:-c:统计字符数-l:统计行数-w:统计字数这些选项总是按照以下顺序显示:行数、字数、字节数、文件名chmod:改变文件或者目录的访问权限。该命令有两种用法。一种是包含原创 2013-10-13 15:56:28 · 376 阅读 · 0 评论 -
Linux命令(2)
rm:rm [option]... FILE...:该命令的功能为删除一个目录的一个或者多个文件或目录,它也可以将某个目录及其下的所有文件或者子目录删除。对于链接文件,只是删除了链接,原有文件均保持不变。如果没有使用-r选项,则rm不会删除目录。主要的option如下:-f:忽略不存在的文件,从不给出提示。-r:指示rm将参数中列出的全部目录和子目录递归的删除-i:进行交互式的原创 2013-10-13 15:19:25 · 379 阅读 · 0 评论 -
Linux常用命令(1)
cat [option] [FILE]..:查看文本文件的内容cat ... >:重定向到其他文件(覆盖内容)cat ...>>:追加(在文本里添加内容)more:more [option] [FILE]..:查看文本文件的内容,屏幕显示完一屏就等用户按下任意键再滚动到下一屏,如果中途退出,可用Ctrl + C 或者 qless:less [option] [FILE]..原创 2013-10-13 14:38:00 · 471 阅读 · 0 评论 -
linux常用命令
Linux常用命令1.cdcd [dir]: 切换当前目录为dir,dir可以是相对路径也可以是绝对路径,如果dir为空,则切换到当前用户的家目录cd -:在两个目录中切换2.pwdpwd:查看当前目录3.mkdirmkdir [option] dir...:创建目录dir,可以一次创建多个。option如果是-p,表示可以连同子目录一起创建4.rmdirrmd原创 2013-10-13 14:04:02 · 385 阅读 · 0 评论 -
strchr函数的简单实现
#include #include char *my_strchr(char *s,char c){ char *p = s; while(*p && *p != c) p++; if(*p == c) return p; return NULL;}int main(void){ char buf[20] = "Hello World"; char c = 'l原创 2013-10-21 17:06:56 · 769 阅读 · 0 评论 -
详细解析sizeof和结构体对齐
sizeof 是C语言的一种单目运算符,sizeof操作符以字节数形式给出了其操作数的存储大小。操作数可以是一个表达式或者类型名。sizeof的使用方法1.用于数据类型sizeof使用形式:sizeof(type)数据类型必须用括号括住。如:sizeof(int)2.用于变量sizeof(var_name)或者sizeof var_name变量名可以不用括号括住。s原创 2013-10-25 19:37:49 · 699 阅读 · 0 评论 -
strcat实现
char *my_strcat(char *dest,char *src){ char *tmp = dest; while(*tmp) tmp++; while(*src) *tmp++ = *src++; *tmp = '\0'; return dest;}原创 2013-10-21 10:08:48 · 420 阅读 · 0 评论 -
strncat函数实现
#include #define N 50char *my_strncat(char *dest,char *src,int count){ char *tmp = dest; while(*tmp) tmp++; for(;count;count--) *tmp ++ = *src++; *tmp = '\0'; return dest;}int main(vo原创 2013-10-21 10:04:23 · 856 阅读 · 1 评论 -
atol函数简单实现
#include #include #include #define N 50long my_atol(const char *nptr){ int c; long total = 0; int sign; while(isspace((int)(unsigned char)*nptr))//跳过前面的空格 ++nptr; c = (int)(unsigned char原创 2013-10-21 09:58:00 · 1518 阅读 · 0 评论