C语言
Mr.YunLong
Keep Writing
展开
-
C笔记:变量数据类型
变量的数据类型原创 2020-09-25 21:36:41 · 344 阅读 · 0 评论 -
C代码编写规范:注释和格式化
注释,缩进,格式化代码原创 2020-09-14 21:33:05 · 399 阅读 · 0 评论 -
C转义字符:\r
C转义字符:\r原创 2020-09-14 15:50:04 · 4391 阅读 · 0 评论 -
C程序运行机制:编辑,编译,链接
编辑,编译,链接原创 2020-09-14 15:34:10 · 2364 阅读 · 0 评论 -
toupper()函数用法及其详解
toupper()函数用法及其详解描述:C 库函数 int toupper(int c) 把小写字母转换为大写字母。声明:int toupper(int c);参数:c – 这是要被转换为大写的字母。返回值:如果 c 有相对应的大写字母,则该函数返回 c 的大写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。示例:#include...原创 2020-02-25 15:55:05 · 25493 阅读 · 0 评论 -
文件I/O函数:ftell()
ftell()描述:C 库函数 long int ftell(FILE *stream) 返回给定流 stream 的当前文件位置。声明:long int ftell(FILE *stream)参数:stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了流。返回值:该函数返回位置标识符的当前值。如果发生错误,则返回 -1L,全局变量 errno 被设置为...原创 2020-03-17 21:15:28 · 258 阅读 · 0 评论 -
文件I/O函数:fseek()
fseek()描述:C 库函数 int fseek(FILE *stream, long int offset, int whence) 设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。声明:int fseek(FILE *stream, long int offset, int whence)参数:s...原创 2020-03-17 21:10:15 · 297 阅读 · 0 评论 -
文件I/O函数:随机访问fseek()和ftell()
该程序打卡一个文件并定位到文件结尾,输出当前字符,然后向前移动知道文件开头,用ftell()函数返回当前距文件开头的位置。/* * @Author: Your name * @Date: 2020-03-15 21:32:33 * @Last Modified by: Your name * @Last Modified time: 2020-03-17 20:36:33 */...原创 2020-03-17 20:58:39 · 232 阅读 · 0 评论 -
文件I/O函数:fputs()函数
fputs()函数描述:C 库函数 int fputs(const char *str, FILE *stream) 把字符串写入到指定的流 stream 中,但不包括空字符。声明:int fputs(const char *str, FILE *stream)参数:str – 这是一个数组,包含了要写入的以空字符终止的字符序列。stream – 这是指向 FILE 对象的指针,...原创 2020-03-16 21:06:20 · 249 阅读 · 0 评论 -
文件I/O函数:fgets()函数
fgets()函数描述:C 库函数 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。声明:char *fgets(char *str, int n, FILE *stream)...原创 2020-03-16 20:55:03 · 277 阅读 · 0 评论 -
perror()函数
perror()函数描述:C 库函数 void perror(const char *str) 把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。声明:void perror(const char *str)参数:str – 这是 C 字符串,包含了一个自定义消息,将显示在原本的错误消息之前。返回值:该函数不返回任何值。...原创 2020-03-16 12:40:59 · 374 阅读 · 0 评论 -
文件I/O函数:feof()函数
feof()函数描述:C 库函数 int feof(FILE *stream) 测试给定流 stream 的文件结束标识符。声明:int feof(FILE *stream)参数:stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。返回值:到文件结尾时返回非零值,否则返回零。用法:#include <stdio.h>int m...原创 2020-03-16 12:35:40 · 249 阅读 · 0 评论 -
文件I/O函数:fgetc()函数
fgetc()函数描述:C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动声明:int fgetc(FILE *stream)参数:stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。返回值:该函数以无符号 char 强制转换为 int 的形...原创 2020-03-16 12:26:05 · 178 阅读 · 0 评论 -
文件I/O:fprintf()和fscanf()函数
该程序可以在文件中添加单词。/* * @Author: Your name * @Date: 2020-03-15 21:32:33 * @Last Modified by: Your name * @Last Modified time: 2020-03-15 21:34:43 */#include<stdio.h>#include<stdlib.h&g...原创 2020-03-16 12:15:39 · 166 阅读 · 0 评论 -
文件I/O函数:fputs()函数
fputs()fgetc()feof()fprintf()fscanf()/* * @Author: Your name * @Date: 2020-03-15 21:32:33 * @Last Modified by: Your name * @Last Modified time: 2020-03-15 21:34:43 */#includ...原创 2020-03-15 21:37:09 · 80 阅读 · 0 评论 -
位操作之对齐特性:_Alignas()&&_Alignof()
位操作之对齐特性:_Alignas()&&_Alignof()对齐指的是如何安排对象在内存中的位置。_Alignof运算符给出了一个类型的对齐要求,在关键字_Aligof后面的圆括号中写上类型名即可:size_t d_align = _Alignof(float);假定d_align的值是4,意思float类型对象的对齐要求是4。较大的对齐值被称为stricter或s...原创 2020-03-08 21:26:37 · 2097 阅读 · 0 评论 -
51单片机学习笔记———14.LCD1602工业显示屏
LCD1602工业显示屏LCD工业显示屏解读:共有16个引脚,其中D0~D7为收发数据引脚,为双向并行数据接口。16代表每一行能够显示16个空格2代表总共两行因为每一个字节能够显示0和1,有两种可能,所以要将32位全部显示完全的话,至少需要2^5,也就是5位,所以我们可以设置8位,也就是一个字节来发送数据,这样比较方便其中第四脚比较特殊,用来决定是用来确定位置还是发送我们想要...原创 2020-03-08 12:47:07 · 1066 阅读 · 0 评论 -
位字段操作三原色
位字段操作三原色/* * @Author: Your name * @Date: 2020-03-07 20:20:16 * @Last Modified by: Your name * @Last Modified time: 2020-03-07 21:23:59 */#include <stdio.h>#include<stdbool.h>#...原创 2020-03-07 21:26:52 · 134 阅读 · 0 评论 -
位操作之创建掩码实现二进制转换
位操作之创建掩码实现二进制转换位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算例如:int i = 1;i = i << 2; //把i里的值左移2位也就是说1的2进制是000…0001这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0左移2位之后变成 000… 0100,也就是10进制的4所以说左移1位相当于乘以...原创 2020-03-06 21:50:42 · 795 阅读 · 0 评论 -
位操作转换二进制
位操作转换转换二进制可以用递归的方法将数字转换为二进制数据,也可以用C语言中的移位运算符来解决。/* * @Author: WangYunLong * @Date: 2020-03-03 20:35:54 * @Last Modified by: WangYunLong * @Last Modified time: 2020-03-03 21:13:20 */#includ...原创 2020-03-03 21:29:27 · 554 阅读 · 0 评论 -
51单片机学习笔记———13.2DS1302实时时钟代码部分(1)
代码:实验序列:11.1实验任务: 向DS1302中写入初始校准时间,然后不断从DS1302中读出时间并显示 实现现象:程序运行后动态数码管显示初始时间:23-59-50,并不断更新显示硬件接线:同动态数码管一节要求。注意事项:(1) DS1302的SPI接口用到了P3.4、P3.5、P3.6,若程序运行有问题查 硬件问题时可以从这三个引脚复用部分查起 (2) DS...原创 2020-03-02 21:34:44 · 868 阅读 · 0 评论 -
51单片机学习笔记———13.1DS1302实时时钟原理部分
DS1302实时时钟芯片原理图:引脚图:需要注意的是,VCC1跟VCC2都外接了电容,只是容量不一样,同常备用电源VCC2的电容值是VCC1电容值的100倍,这也不难理解,如果断电,VCC2将能够提供较长一段时间的电力。VCC1(主电源)-----------过滤滤波作用VCC2(备用电源)--------断电时放电提供电力X1与X2引脚接上晶振以获取实时时间各种不同的引脚...原创 2020-03-02 18:48:03 · 2426 阅读 · 0 评论 -
文件操作——getc()和putc()函数
getc()和putc()函数getc()和putc()函数其实和getchar()与putchar()函数十分相似,所不同的是,要告诉getc()和putc()函数使用哪一个文件从标准输入中获取字符ch = getchar()从指定文件中获取字符FILE *fp;c = getc(fp);//从fp指定的文件中读取字符#include<stdio.h>#i...原创 2020-03-01 21:50:47 · 1171 阅读 · 0 评论 -
文件操作——命令行参数(一个简单的文件压缩程序)
文件操作——命令行参数(一个简单的文件压缩程序)下面的程序把一个文件中选定的数据拷贝到另一个文件中。该程序同时打开了两个文件,以“w”和”r“分别打开,该程序以保留每三个字符在中的第一个字符的方式压缩第一个文件中的内容,最后把压缩的文件放入第二个文件,并且更改第二个文件的后缀名为.red/* * @Author: Your name * @Date: 2020-03-01 20:44...原创 2020-03-01 21:37:47 · 404 阅读 · 0 评论 -
51单片机学习笔记———12.1模拟法用于串口通信
51单片机学习笔记———12.1模拟法用于串口通信通信无非就是两种加上两种方式:发送接收单片机与电脑通讯原理图:当我们的单片机向电脑发送数据时,并不是一下子全部发完,而是根据字节数一位一位的发送,每发送一位数据就需要一定的时间,发送两位数据相隔的时间就是通讯的波特率倒数,而一般波特率都非常高,所以发送的时间非常短,所以当单片机要发送数据时,肯定要用到P3.1引脚的TXD。所...原创 2020-03-01 19:48:35 · 307 阅读 · 0 评论 -
51单片机学习笔记———12.1UART串口通信
UART一般用于板间通讯,即单片机和外围设备之间的通讯。先发一位 0 表示起始位,然后发送 8 位数据位,数据位是先低后高的顺序,数据位发完后再发一位 1 表示停止位。这样本来要发送一个字节的 8 位数据,而实际上我们一共发送了 10 位,多出来的两其中一位起始位,一位停止位。有关寄存器:SCON:串行口控制寄存器 `SM0`,`SM1`:工作方式选择位(方式) `TI`:发送中...原创 2020-03-01 18:15:26 · 638 阅读 · 0 评论 -
文件操作
文件操作——fopen()函数描述:C 库函数 FILE *fopen(const char *filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。声明:FILE *fopen(const char *filename, const char *mode)参数:filename – 这是 C 字符串,包含了要打...原创 2020-03-01 20:21:07 · 239 阅读 · 0 评论 -
51单片机学习笔记———10.中断机制
中断单片机的中断系统是最基础也是最重要的部分,博主在学习这个的时候踩到了很多的坑,于是写下这篇笔记来整理一下自己的思路。中断涉及的内容:中断源:C51单片机有5个中断源,C52单片机有6个中断源:由于多出来的那个中断源不常用,所以我们在这里只介绍C51单片机的中断系统: 8051有3个内部中断源T0,T1,串行口,2个外部中断源INT0,INT1中断整体结构:与中断...原创 2020-02-29 21:39:54 · 410 阅读 · 0 评论 -
51单片机学习笔记———9.点亮流水灯的一种奇葩算法(2)
unsigned char i;for(i = 0;i<8;i++){ LED = (0xff&~(1<<i));; delay();}原创 2020-02-28 18:03:22 · 227 阅读 · 0 评论 -
ANSIC类型限定符
ANSIC类型限定符const类型限定符以const类型关键字声明的对象,其值不能通过赋值来递增,递减来修改。以下代码:const int a = 12;//限定a的值不能修改a = 12;//不可以编译器会报错,但是可以初始化变量,因此下面的代码没问题:const int a = 12;//没问题该声明让a成为只读变量。初始化后,就不能改变它的值。可以用const关键字创建...原创 2020-02-27 20:13:13 · 195 阅读 · 0 评论 -
51单片机学习笔记———8.点亮流水灯的一种奇葩算法
51单片机学习笔记———8.点亮流水灯的一种奇葩算法最近学习51单片机的过程发现了一种脑洞大开点亮流水灯的方法,于此分享一下源码:#include<reg52.h>sbit LED0 = P0^0;sbit LED1 = P0^1;sbit LED2 = P0^2;sbit LED3 = P0^3;sbit LED4 = P0^4;sbit LED5 = P0^5;s...原创 2020-02-27 17:00:50 · 670 阅读 · 0 评论 -
51单片机学习笔记———7.按键法配置定时器
51单片机学习笔记———7.按键法配置定时器如果用延时函数来对按键进行检测的话,会消耗单片机的内存,不是很好,于是我们有以下方法:unsigned char cnt1 = 0XFF;cnt1 = (cnt1<<1)|KEY1;if(cnt1!=0x00){ KeyLock = 0;}else if (KeyLock==0){ KeyNum = 1; ...原创 2020-02-25 19:53:39 · 681 阅读 · 0 评论 -
51单片机学习笔记———6.中断法配置定时器
51单片机学习笔记———6.中断法配置定时器#include<reg52.h>sbit LED P0^4;void main(){ EA = 1;//打开总中断 TMOD&=0xFC; TMOD|=0x01; TH0 = (65535-2000)/256;//定时2ms TL0 = (65535-2000)/%256; E...原创 2020-02-25 18:47:44 · 358 阅读 · 0 评论 -
ctype.h字符函数和字符串
ctype.h字符函数和字符串利用toupper()函数可以处理字符串中的每个函数,把整个字符串转换成大写利用ispunct()函数可以统计字符串中标点符号的个数(可以是非字母的任意图形字符)利用strchr()函数处理fgets()读入字符串的换行符(如果有的话)/* * @Author: Your name * @Date: 2020-02-24 14:35:13 * @La...原创 2020-02-25 16:24:49 · 446 阅读 · 0 评论 -
ispunct()函数用法及其详解
ispunct()函数用法及其详解描述:C 库函数 int ispunct(int c) 检查所传的字符是否是标点符号字符,并统计标点字符的个数。标点符号字符可以是**非字母数字**(正如 isalnum 中的一样)的**任意图形字符**(正如 isgraph 中的一样)。声明:int ispunct(int c);参数:c – 这是要检查的字符。返回值:如果 c 是一个...原创 2020-02-25 16:00:45 · 5136 阅读 · 0 评论 -
字符串排序————选择排序算法
字符串排序————选择排序算法我们来处理一个按字母表顺序排序字符串的问题,主要用strcmp()函数来确定两个字符串的顺序,代码如下:/* * @Author: Your name * @Date: 2020-02-24 14:35:13 * @Last Modified by: Your name * @Last Modified time: 2020-02-25 15:02...原创 2020-02-25 15:43:15 · 2843 阅读 · 0 评论 -
strncpy()函数用法及其详解
strcpy()函数用法及其详解strcpy()和strcat()函数都有相同的问题,他们都不能检验目标空间是否能够容纳源字符串的副本。所以,拷贝字符串用strncpy()函数更加安全描述:C 库函数 char *strncpy(char *dest, const char *src, size_t n)把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长...原创 2020-02-24 21:11:07 · 33478 阅读 · 0 评论 -
strcpy()函数用法及其详解
strcpy()函数用法及其详解含义:C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。声明:char *strcpy(char *dest, const char *src)参数:dest –...原创 2020-02-24 15:59:41 · 91058 阅读 · 0 评论 -
strcmp()函数用法及其详解
strcmp()函数:将指定的两个字符串进行比较。声明:int strcmp(const char *str1, const char *str2)参数:str1 – 要进行比较的第一个字符串。str2 – 要进行比较的第二个字符串。返回值:(比较指定的ASCII值)如果 str1 < str2。返回值< 0,如果 str2 > str1。返回值> ...原创 2020-02-23 21:09:29 · 19724 阅读 · 0 评论 -
结构体,共用体及其内存分配
结构体什么是结构体:结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体(自定义数据类型)结构体如何分配内存:struct stduent{ int num; char name[20]; char sex; int age; float score; char adde[30];};//结构体类型定义的作用域结构体类型定义描述结构的组织形式,不分配内存...原创 2020-02-23 21:08:41 · 287 阅读 · 0 评论