自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 在Linux环境下基于C语言的一个简单的C/S通信程序

这只是初始版本,这个程序不能使多个客户端同时对服务器端的访问,后续会进一步的优化。 服务器端: #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<string.h> #include<assert.h> #include<sys/socket.h>...

2019-10-15 20:25:00 539

原创 内联函数

inline是一种用于实现的关键字,而不是一种用于声明的关键字。inline关键字必须与函数体放在一起才能使函数成为内联。 例:inline void Sum(int a, int b); void Sum(int a, int b) { }//该函数并不是一个真正的内联函数 inline void Add(int a, int b){ }该函数是一个内联函数 1.inline函数和宏的区别 ...

2019-10-15 19:50:24 332

原创 进程间通信->管道

进程间通信:管道,信号量,共享内存,消息队列,套接字 管道文件:使用它需要同时有一个进程以写的方式打开,一个进程以读的进程打开 有名管道:mikfifo(命令,库函数)创建管道->1命令创建2代码创建 管道为空,读,阻塞 管道写端关闭,读,read返回值为0 管道读端关闭,写,异常->SIGPIPE 无名管道:主要用于父子进程之间,pipe创建无名管道,半双工通信 fd[0]读数据,f...

2019-10-01 20:51:05 300

原创 目标文件与可执行文件

现在PC平台流行的可执行文件格式主要是windows的PE和linux的ELF,它们都是基于unix的COFF而产生的。 目标文件是源代码编译后但未进行链接的中间文件(windows的.obj和linux的.o)。它与 ...

2019-10-01 20:50:39 347

原创 fork()与进程管理

fork用于复制进程,创建一个子进程,被复制的进程称为父进程,父进程与子进程并发运行 先复制一个进程控制块PCB(是一个结构体,在linux中被称为进程描述符),再复制进程实体 fork完后,父进程中返回值为pid_t类型,值为子进程的pid,子进程中值为0 在两个进程中,逻辑地址相同,物理地址不一定相同,没有可比性 刷新缓冲区的条件:1 缓冲区放满,2 强制刷新(fflush(stdout)或者...

2019-06-30 00:30:03 270

原创 init与解压tar及程序的编译链接

init 更改运行级别 0关机 1单用户模式,只能root(管理员)登入,可用于系统维护 2多用户,无NFS(网络) 3多用户模式 4unused,安全模式 5图形界面 6重启 tar cvf 压缩文件 被压缩文件--------制作tar包 gzip 压缩 tar zxf 压缩包------解压 预编译 编译 汇编 链接 ...

2019-06-29 23:53:36 315

原创 makefile管理工程与GDB调试

makefile管理工程,实现自动化编译 例:管理main.c,max.c,add.c GDB调试    对象:运行着的程序 例:gcc -o main main.c -g   gdb main l:显示代码 b+行号:加断点 info break:显示断点信息 r:运行程序 n:单步执行 p:打印 s:进入函数 finish:退出函数 b+函数名:加断点 q:退出调试 ...

2019-06-24 00:21:24 292

原创 Vim命令

Vim有三种模式: 1命令模式 2插入/编辑模式 3末行模式 命令模式->编辑:i,a,o,I,A,O 编辑->命令:ESC 命令->末行::,/,? 命令模式: 复制:yy复制一行,nyy复制n行 剪切/删除:dd,ndd 删除一个字符:x 替换:r替换一个字符,R持续替换 粘贴:p 撤销一个操作:u 消除整行内容并重新插入:cc 消除当前至行末尾,并重新插入:C 大小写转换:...

2019-05-12 21:28:33 142

原创 Linux基本命令

pwd查看当前位置 ls显示当前目录下的文件 “ls -l”==“ll”显示文件的详细信息 ls -a显示隐藏文件 ls -al显示所有信息及隐藏文件 cd切换目录 cd .当前位置 cd …返回上一层目录 cd-切换至最近访问的目录 cd~切换到家目录 cd+相对路径/绝对路径 touch创建一个普通文件 mkdir创建一个目录文件 rmdir删除一个空目录 rm删除一个普通文件 rm -r删除...

2019-05-12 21:06:10 147

原创 Linux目录结构及文件类型

Linux目录结构: /boot           ~~~~~~~~~~           内核与启动有关的文件 /bin      ~~   存放命令...

2019-05-11 10:55:22 170

原创 空指针->无效指针

对一个空指针进行解引用是错误的,会导致程序崩溃,例如下面的代码: int main() { int a = 10; int *p = &a; p = NULL;//NULL:空指针,是唯一一个表示无效指针 printf("%d\n",*p);//崩溃是正常行为 printf("haha\n"); return 0; } 这是因为指针p没有指向任一存储单元,对其进行解引用时不...

2019-04-21 10:18:53 1644 1

原创 字符串常量与字符数组

我们常常用以下两种方式存放字符串: char *st1="abcd";//字符串常量 str1[0] = 'x';//error char str2[]="abcd";//字符数组 str2[0] = 'x';//ok 这两种有什么区别呢? 首先第一个是字符串常量,str1本质上是一个指针,存放的是字符串首元素的地址,所以不能对其修改。 而第二个是字符数组,str2是一个数组,存放的是一个...

2019-04-20 21:15:50 1043

原创 不安全函数与后缀为_s更安全的函数

在我们平时常用的函数中,有一些函数是极其不安全的,例如strcpy,strcmp,strcat等字符串函数 所以我们平时应该尽量少使用这些不安全函数,现在让我们来编写一个安全函数吧! 例如:strcpy_s,我们来编写属于我们自己的函数 void Mystrcpy_s(char *des,size_t n,const char *src)//des目标字符串,n目标字符串的大小,src源字符串 ...

2019-04-20 20:36:17 946

原创 在n进制下,a*b=c,n 等于?

例:在n进制下,有456*567=150216,那么判断n等于多少? 将左边的式子展开得(4n2 + 5n+6) * (5n2+6n+7) = n5+5n4+2n2+n+6 ① 整理得20n4+49n3+88n2+71n+42 = n5+5*n4+2n2+n+6 ② 将①式等号两边同时%n得 41%n=6 ③ ①式等号两边先同时/n,再同时%n,整理得(...

2019-04-01 17:40:26 311

原创 指针加1

日常生活中我们常用的计算是加减乘除,那么对于指针来说,它却只有加减运算 首先我们先讨论指针加一是怎么加的 可以参考下列代码 int main() { int arr[10] = {0,1,2,3,4,5,6,7,8,9}; int *p = arr;//将数组arr[0]的地址赋给指针变量p printf("%d\n", p);//查看此时p的地址 printf("%d\n\n" ,*p...

2019-04-01 15:50:09 1570

原创 给一个正整数,顺序和逆序输出每一位数

给一个正整数,求: ① 求出它是几位数 ② 输出每个位上的数 ③ 逆序输出每一位数 例如输入123,则输出 1 2 3 3 2 1 是三位数 ...

2019-03-30 10:49:40 2045

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除