Linux C 语言
文章平均质量分 70
主要的C语言基础相关知识
wenfei11471
这个作者很懒,什么都没留下…
展开
-
求解完数
完数的定义:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6=1+2+3如果需要求解1000或者10000以内的所有完数,怎么做呢?分析:首先我们需要找到某个数的所有因子,然后减完这些因子,如果结果为0,则这个数就是完数,注意每个数1也是它的因子,但是1自己本身不是完数。查找因子我们需要循环多少次呢?答案是√num个,代码如下:题目简单,不做解释。源程原创 2018-01-31 22:09:10 · 1553 阅读 · 0 评论 -
C语言中的那些宏
__DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字) __FILE__ 代表当前源代码文件名的字符串文字 __LINE__ 代表当前源代码中的行号的整数常量 __TIME__ 源文件编译时间,格式微“hh:mm:ss” __func__ 当前所在函数名举例:如果定义:char *p;p = __TIME__;printf("p = %s\n", p...原创 2018-03-16 18:44:58 · 201 阅读 · 0 评论 -
位、字节、char、int(32位系统) 之间的关系
一、概念:位(bit):计算机中最小的数据单位。每一位的状态只能是0或1。字节(byte):存储空间的基本计量单位,8 个二进制位构成1个字节。1 个字节可以储存 1 个英文字母或者半个汉字。KB:表示1024。1KB表示 1024 个字节。char:字符型数据,表示 2 个字节,也就是 16 位。int:整型数据,表示4个字节。 字(word):由若干个字节构成,字的位数叫做字长,不同档次的机...原创 2018-03-15 20:03:43 · 7007 阅读 · 1 评论 -
switch 中 break 和 continue 的区别
1、break 用来退出 switch,continue 本身是不能用在 switch 里的,他必须结合循环来用,表示跳过本次循环2、switch 的 case 语句最后如果没有加 break / continue,则程序会一直往后执行,可以借鉴 goto 跳转到位置,其实 switch 本身可以看作某种形式的跳转,而 C 语言中本身是不执行:的那条语句的,例如,如果程序中出现一条语句 wtch ...原创 2018-03-13 14:52:29 · 14945 阅读 · 5 评论 -
const pointer
int a ,b;const int *p=a;与int const *p=a;是一样的表示p可以指向a,也可以改变指向b,但是不能通过指针p来修改a的值p=b; √*p=4; ×int *const q=a;表示q只能指向a,不能再指向其他地方,但是可以通过q来修改a的值q=b; ×*q=4; √int const * const s=a;表示s只能指向a,不...原创 2018-03-05 15:04:34 · 270 阅读 · 0 评论 -
目录和文件权限与 umask 关系
一、权限文件权限:r:读取文件内容的权限w:新增、修改和删除文件内容的权限x:执行文件的权限例如:一个文件a.sh,它的权限是rw-,使用 ./a.sh 来运行会提示你没有权限,只能用 sh a.sh 的方式运行。加上 x 权限之后,就可以以 ./a.sh 来执行这个文件脚本了。目录权限:r:浏览目录的权限w:新建、删除、修改和移动目录内文件的权限x:该用户具有进入目录的权限注解:目录的只读访问不...原创 2018-03-04 14:02:53 · 1261 阅读 · 0 评论 -
C 语言中的goto、 break 和 continue 语句使用
一、goto 语句goto 语句为无条件跳转,goto 语句后面带一个标识符,该标识符是同一个函数内某条语句的标号。标号可以出现在任何可执行语句的前面,并且以一个冒号“:”作为后缀。/************************************************************************* > File Name: test.c > Au...原创 2018-02-22 21:26:48 · 1288 阅读 · 0 评论 -
查找100-200以内素数
只能被1和其本身整除的数称为素数,1不是素数,因为简单,所以不做解释,直接上程序源代码如下:/********************************************************** *Search all prime numbers from 101 to 200 * **********************************原创 2018-01-31 22:17:23 · 1385 阅读 · 0 评论 -
C 语言中 const 与指针的结合使用
请区分一下几种指针的区别1、const int *p 2、int const* p 3、int *const p;4、const int const *p5、const int *const p解析:1、const int *p 中 const 修饰的是 *p,因此不能通过 *p 修改其指向对象的值,但是可以更改 p 的指向例如:int a = 3; int b = 4;const int *p ...原创 2018-07-10 15:12:05 · 364 阅读 · 1 评论 -
排序——选择排序、冒泡排序和快速排序比较
一、冒泡排序思路:1、以 int 类型为例2、拿第一个数与后面数相比较,如果比后面的数大则交换3、拿第二个数与后面的数比较,如果比后面的数大则交换4、直到比较到倒数第二个数,最后一个数不用比较5、两个数比较可以用中间变量替换或者位运算6、利用位运算时需注意,如果两个数相等则不能使用位运算7、函数代码如下:二、快速排序思路:1、以 int 类型为例2、选择第一个数为基点,右边 j 开始查找比基点小的...原创 2018-06-16 15:59:08 · 23712 阅读 · 2 评论 -
员工管理系统(C 语言)——项目说明
项目名称:员工管理系统项目目的:1、实现简单的公司对员工信息的管理2、通过项目锻炼实现逻辑转换为代码的能力3、利用函数封装实现项目过程中的逻辑过程以及需求功能的实现4、学会数据库的操作以及网络通信5、强化代码健壮性的意识项目描述:1、服务器负责管理所有员工的数据库信息,客户端可以通过网络连接服务器来查询员工和修改个人信息;2、管理员账号只能在服务器登录,同时管理员账号是唯一一个的,在服务器开启的过...原创 2018-06-14 08:51:44 · 5734 阅读 · 0 评论 -
GDB 知识点——基础操作
Linux C 中的 GDB 调试使用:1、GDB 的主要功能: 1]启动被调试程序 2]让被调试的程序在指定的位置停住 3]当程序被停住时,可以检查程序状态(如变量的值)2、检查 GDB 版本: gdb --version3、下载 GDB: sudo apt-get install gdb4、编译产生可调试的可执行文件(编译一定要加 -g): gcc -o app test.c -g gcc ...原创 2018-06-07 18:12:41 · 290 阅读 · 0 评论 -
关于scanf很多人不知道的小秘密
今天忽然想到一个问题,假如我利用scanf想给变量a输入一个%d的整数,结果不小心输入了一个字符串yf或者是123ff后会怎么样呢?哈哈,自己测试了一下,结果发现,当你输入的时123ff即前面是整数后面是字符串时,编译器会将前面的123赋值给变量a,而后面的ff字符串仍然会存在于缓冲区内,当你输入的时ff123或者yf时,编译器不会将你输入的任何东西给变量此时变量的值是随机的,如果此时输出变量原创 2018-01-28 15:02:41 · 611 阅读 · 1 评论 -
Linux 网络——交换机不能用两根网线相连
同一个局域网所有的交换机之间可以用网线串联起来,但绝对不能使任意>=2个交换机形成环路,否则局域网内将形成广播风暴,所用局域网内的用户都将不能上网例如局域网内的交换机可以使用如下相连:A → B → C → D……但绝对不行有如下相连:A → B → C → D → B → E……A → B → C → B...原创 2018-05-31 22:27:02 · 1787 阅读 · 0 评论 -
网络通信2—UDP 模型程序编写步骤(参照 Ubuntu 16.04 版本)
UDP 模型程序编写步骤一、UDP基础模型服务器流程step 1:创建 socket() 套接字接口并判断sockfd = socket(AF_INET, SOCK_DGRAM, 0);if (sockfd == -1){perror("socket failed");return -1;}step 2:设置服务器 IP 和 Portmemset(&seraddr, 0, sizeof(s...原创 2018-03-08 22:34:04 · 802 阅读 · 0 评论 -
网络通信1—TCP程序编写步骤(参照 Ubuntu 16.04 版本)
TCP基础模型服务器流程step 1:创建 socke() 套接字接口并判断listenfd = socket(AF_INET, SOCK_STREAM, 0);if (listenfd == -1){perror("socket failed");return -1;}step 2:设置 IP 和 Port memset (&seraddr, 0, sizeof(seraddr));se...原创 2018-03-07 22:38:48 · 1326 阅读 · 0 评论 -
I_O—标准 I_O 实验
一、测试标准 I/O 一次可以同时打开多少个文件 1、实验思路: 利用循环同时打开文件,直到不能打开 2、代码如下:二、fgetc 和 fputc 实现拷贝文件并输出文件行数 1、实验思路: 打开文件,用 fgetc 读取,然后 fputc 输出 2、代码如下:三、fgetc 和 putchar 实现只输出字母并统计字母个数 1、实验思路: 打开文件...原创 2018-04-07 09:22:05 · 322 阅读 · 0 评论 -
I_O —基础概念(参照 Ubuntu 16.04 版本)
一、文件的概念定义:所谓文件是指一组相关数据的有序集合,这个数据集有一个名称,叫文件名。如源程序文件,目标文件,可执行文件,头文件等文件通常是在驻留在外部介质上的,使用时才调入内存分类:文件类型:普通文件 -指ASCII文本文件、二进制文件以及硬链接文件目录文件 d包含若干文件或子目录符号链接只保留所指向文件的地址而非文件本身管道文件用于进程间通信字符设备文件原始的I/O设备文件,每次操作仅操作1...原创 2018-03-06 21:26:00 · 336 阅读 · 0 评论 -
VS2010里函数枚举
一、cout函数说明:调用该函数必须申明头文件“#include <iostream>”同时声明后面必须使用“using namespace std;”正确书写为:#include <iostream>using namespace std;该函数表示输出,功能和printf一样,但cout不能用于C语言中使用说明:1、必须配合“<<”使用,如:cout<...原创 2018-03-22 14:47:58 · 1097 阅读 · 0 评论 -
系统全局变量 errno 是如何获得 errno.h 中的值的呢?
很多时候我们在使用 errno 的时候都知道它代表的是 errno.h 中的错误值,可是为什么它就是代表那些值的呢?系统在哪里给它赋值了呢?故事就要从源头开始:1、errno 全局变量是在哪里定义的?答:既然是 errno,那一定是和 err 有关的,搜索发现就在 <bits/errno.h> 中有这么一段说明:# ifndef __ASSEMBLER__/* Function to...原创 2018-03-04 22:36:37 · 4275 阅读 · 0 评论 -
open 函数的 flag 参数和错误代码
一、flag 参数定义头文件:<bits/fcntl-linux.h>----------------------------------------------------------------------------------------------------------------------------必选参数说明:#define O_ACCMODE 0003:读写...原创 2018-03-04 17:12:08 · 2101 阅读 · 0 评论 -
关于sizeof(*p+1)的那些事
今天老铁在写程序时发现一个意外,在char a[]={1,3,5,7,9},*p=a;程序求sizeof(*p+1)时遇到一些意外,本来以为会是1,结果却出意料的是4,这就有些尴尬了,经过多次测试了解了,原来是在求解sizeof(*p+1)时,*p=char 1,然后进行运算char1 +1的结果是char 1+int 1,因为在数值运算时系统默认为1是int型的,因此结果为int 2,所以siz原创 2018-01-29 22:33:36 · 506 阅读 · 0 评论 -
reg52.h中直接定义了P3^4等引脚,但是P1^5引脚没有明确表示出来?
实际上reg52.h中已经定义了"sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0;"等引脚的地址,如果取P1.5的引脚,只需要表示成“sbit P1.5= P1^5”、“sbit P1.5=0x90^5”或者“sbit P1.5=0x95”,其中P1.5相当于变量标识符可以随便定义,写成abc也行,主要是要把P1.原创 2018-01-12 10:45:31 · 1849 阅读 · 1 评论 -
Keil头文件代码—Absacc
/*--------------------------------------------------------------------------ABSACC.H Direct access to 8051, extended 8051 and NXP 8051MX memory areas.Copyright (c) 1988-2010 Keil Elektronik Gm原创 2018-01-11 12:47:02 · 1333 阅读 · 0 评论 -
Keil 头文件源程序代码——Math.h
/*--------------------------------------------------------------------------MATH.H Prototypes for mathematic functions.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All原创 2018-01-11 12:45:04 · 7561 阅读 · 2 评论 -
智能指针详解
重点:学习智能指针,看这偏博客就够了,讲得很详细,特别用心去写的博客原文出自:http://www.cnblogs.com/Lynn-Zhang/p/5699983.html博客园首页新随笔管理随笔 - 48 文章 - 2 评论 - 5智能指针 auto_ptr、scoped_ptr、shared_pt转载 2016-09-02 11:27:21 · 4668 阅读 · 0 评论 -
C语言浮点型数据存储结构
1.float类型float类型占四个字节,每个字节占8位,总共32位,其内存结构如下图:31位为符号位:0表示正数,1表示负数31~23位:共8位表示指数位,内存存储数据从0~2^8-1=255,由于指数可以是正也可以是负,所以指数位采用移位存储表示数据,8位有符号有可表示数据从-127~128,所以指数位表示的实际指数应该是无符号位数减去127,例如0000 0原创 2013-10-20 17:01:22 · 15940 阅读 · 2 评论 -
float的表示
先说一下计算机中二进制的算法:整数整数的二进制算法大家应该很熟悉,就是不断的除以2取余数,然后将余数倒序排列。比如求9的二进制: 9/2=4 余 1 4/2=2 余 0 2/2=1 余 0 1/2=0 余 1 一直计算到商为0为止,然后将得到的余数由下到上排列,就得到了9的二进制:1001。 从上面的算法我们可转载 2016-01-21 11:39:16 · 5607 阅读 · 1 评论 -
C语言中关于float、double、long double精度及数值范围理解
转自:http://blog.sina.com.cn/s/blog_6ebd49350101gdgo.htmlIEEE754浮点数的表示方法。C语言里对float类型数据的表示范围为-3.4*10^38~+3.4*10^38。double为-1.7*10^-308~1.7*10^308,long double为-1.2*10^-4932~1.2*10^4932.类型转载 2015-11-25 16:54:45 · 26483 阅读 · 2 评论 -
员工管理系统(C 语言)——客户端解析
源码下载地址:https://download.csdn.net/download/wenfei11471/10477504客户端功能:1、运行时先测试是否能连通服务器(不畅通如下图所示):2、登录时需要正确输入账号和密码(如下图所示):3、成功登录后,具有下图所示功能:4、查询功能如下:5、修改的具体功能如下:6、修改的具体操作如下:7、查历史记录功能如下:客户端逻辑函数详解:1、main 函数...原创 2018-06-14 08:58:08 · 1973 阅读 · 2 评论 -
员工管理系统(C 语言)——服务器解析
源码下载地址:https://download.csdn.net/download/wenfei11471/10477504服务器功能:1、运行时主界面(服务器启动后,只有管理员下线,服务器不会关闭):2、登录失败后,进入登录界面:3、登录成功后,显示下图所示功能:4、查询功能如下(需要输入查看的用户名):5、修改的具体功能如下:6、修改的具体操作如下:7、添加功能如下:8、删除功能如下:服务器逻...原创 2018-06-14 09:03:06 · 1707 阅读 · 5 评论