C语言学习
文章平均质量分 72
C语言学习
LEO-max
GPT农名工
展开
-
gcc和arm-linux-gcc的常用选项
gcc的使用方法:gcc [选型] 文件名gcc常用选项:gcc -v:查看gcc编译器的版本,显示gcc执行时的详细过程gcc -o file:指定输出文件名file,这个名称不能与源文件名同名gcc -E:只预处理、不会编译、汇编、链接gcc -S :只编译、不会汇编、链接gcc -c:编译和汇编、不会链接...转载 2021-04-16 10:12:56 · 840 阅读 · 0 评论 -
消息队列
本例在建立消息队列后,打印其属性,并在每次发送和接收后均查看其属性,最后对消息队列进行修改。1.显示消息属性的函数msg_show_attr() msg_show_attr()函数根据用户输入的消息ID,将消息队列中的字节数、消息数、最大字节数、最后发送消息的进程、最后接收消息的进程、最后发送消息的时间、最后接收消息原创 2021-04-15 21:16:58 · 441 阅读 · 0 评论 -
C语言:extern用法
在C语言中,修饰符extern用在变量或者函数的声明前,用来说明此变量/函数是在别处定义的,要在此处引用。1. extern修饰变量的声明 举例来说,如果文件 b.c 需要引用 a.c 中变量 int v,就可以在 b.c 中声明 extern int v ,然后就可以引用变量v。能够被其他模块以 extern 修饰符引用到的变量通常是全局变量。还有很重要的一点是,extern int v 可以放在 b.c 中原创 2021-03-10 01:03:04 · 2360 阅读 · 2 评论 -
用树莓派玩传感器
接线VCC -> 1针脚OUT -> 40针脚GND -> 6针脚C语言代码:#include <wiringPi.h>#include <stdio.h>#include <sys/time.h>#define AVOID 29int main(void){ if (wiringPiSetup() == -1) { printf("setup wiringPi failed !");原创 2021-02-24 16:30:46 · 1766 阅读 · 1 评论 -
智能家居
目录主流程设计框架及某一功能框架编写InputCommand.h框架contrlDevices.h框架bathroomLight.c框架四盏灯、火焰传感器及主程序代码(继电器输入控制)bathroomLight.cupstairLight.clivingroomLight.crestaurantLight.cfire.cmainPro.ccontrlDevices.h添加声音识别模块的串口读取功能voiceContrl.cInputCommand.hmainPro.c主流程设计框架及某一功能框架编写头文原创 2021-03-05 00:38:07 · 543 阅读 · 1 评论 -
通俗易懂的C语言指针(详解)
目录1.语言中变量的实质2.赋值给变量变量的地址3.指针是什么4.数组元素5.数组名与指针变量的区别6.申明指针常量1 int i 说起2 const int * pi 的语义3 再看 int * const pi7、函数参数传递方式1.值传递的一个错误认识2.一个预备的常识3.理解值传递的形式8、双针概念:二、指针的地址与指向另一指针地址的指针三、一个应用实例9.函数名与函数指针一 数调用二 函数指针变量的申明三 通过函数指针变量调用函数四 调用函数的其它书 写格式五 定义某一函数的指针类型:六 函数指针原创 2021-03-01 13:57:02 · 2092 阅读 · 2 评论 -
树莓派和电脑之间串口通信编程
串口配置的一些详细内容可以参考其他博文,这里不作介绍。树莓派与电脑进行通信树莓派向电脑端发送数据#include <wiringSerial.h>#include <wiringPi.h>#include <stdio.h>#include <stdlib.h> int main(){ int fd; if(wiringPiSetup()原创 2021-02-19 18:34:18 · 611 阅读 · 0 评论 -
数据结构实现头插法和尾插法
数据结构这种烧脑的东西我是真不想搞,学了一学期也只知道有个数据结构这个东西,为了学习搞好C语言,硬着头皮学。头插法:#include <stdio.h>#include <stdlib.h>struct list{ int data; struct list *next;};int main(){ struct list *inPut,*head; head->next = NULL; int i,n; printf("请输入排序数字:\n");原创 2021-02-07 21:04:24 · 787 阅读 · 0 评论 -
Linux文件服务站(C语言)
服务端代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h原创 2021-02-05 02:12:43 · 603 阅读 · 0 评论 -
字节序
字节序是由于不同的主处理器和操作系统,对大于一个字节的变量在内存中的存放顺序不同而产生的,例如2个字节的short int和4个字节的int类型变量都有字节序的问题。大端字节序和小端字节序 字节序是由于CPU和OS对多字节变量的内存存储顺序不同而产生的。字节序介绍 &原创 2021-02-03 02:11:43 · 551 阅读 · 0 评论 -
TCP网络编程流程
TCP网络编程是目前比较通用的方式,例如HTTP协议、FTP协议等很多广泛应用的协议均基于TCP协议。TCP编程主要为C/S模式,即客户端(C)、服务器(S)模式,这两种模式之间的程序设计流程存在很大的差别。TCP网络编程架构 TCP网络编程有两种模式,一种是服务器模式,另一种是客户端模式。服务器模式创建一个服务程序原创 2021-02-02 13:25:15 · 1853 阅读 · 0 评论 -
套接字编程的基础知识
坚持每天学习,坚持写博客。二月份加油目录套接字地址结构通用套接字数据结构实际使用的套接字数据结构结构sockaddr和结构sockaddr_in的关系用户层和内核层交换过程向内核传入数据的交互过程内核传出数据的交互过程套接字地址结构 套接字编程需要指定套接字的地址作为参数,不同的协议族有不同的地址结构定义方式。这些地址结构通常以sockaddr_开头,每一个协议族有一个唯一的后缀,例如对于以太网,其结构名称原创 2021-02-01 01:02:16 · 444 阅读 · 0 评论 -
Linux下的线程
多线程编程实例 Linux系统下的多线程遵循POSIX标准,叫作pthread,可以使用man pthread在Linux系统下查看系统对线程的解释。编写Linux下的线程需要包含头文件pthread.h,在生成可执行文件的时候需要链接库libpthread.a或者libpthread.so。 下面给出一个简单的多线程原创 2021-01-29 00:20:01 · 364 阅读 · 0 评论 -
进程间通信和同步
目录半双工管道基本概念pipe()函数介绍pipe()函数的例子管道阻塞和管道操作的原子性管道操作原子性的代码命名管道创建FIFOFIFO操作消息队列消息缓冲区结构结构msgid_ds结构ipc_perm内核中的消息队列关系键值构建ftok()函数获得消息msgget()函数发送消息msgsnd()函数接收消息msgrcv()函数消息控制msgctl()函数消息队列的一个例子显示消息属性的函数msg_show_attr()信号量信号量数据结构新建信号量函数semget()信号量操作函数semop()控制信号原创 2021-01-28 02:05:37 · 778 阅读 · 0 评论 -
Linux线程编程记录
目录1.线程2.进程与线程的区别进程与线程为什么要用线程3.线程的创建及等待语法相关API4.创建一个线程5.线程等待6.线程共享内存代码验证7.线程同步之互斥量上锁与解锁相关API上锁与解锁8.死锁情况9.线程条件实现线程的同步1.线程 一个进程包含一个或多个执行线程(通常只叫线程),线程是进程中的活动单位。线程是一种抽象,它负责执行代码和维护进程的运行状态。原创 2021-01-26 14:18:01 · 312 阅读 · 0 评论 -
Linux系统进程间通信编程
目录1.进程间通信概述Linux使用的进程间通信方式1)管道( pipe )2)信号量( semophore )3)消息队列( message queue )4)信号 ( singal )5)共享内存( shared memory )6)套接字( socket )2.管道通信原理1)匿名(无名)管道特点管道编程实战2)命名(有名)管道FIFO1.特点2.原型3)命名管道的数据通信编程实现3.消息队列的通信原理4.消息队列编程收发数据5.共享内存概述6.共享内存编程实现7.信号概述8.信号编程9.信号携带消息原创 2021-01-25 16:17:00 · 408 阅读 · 0 评论 -
Linux进程编程
目录1.进程相关概念创建进程函数fork的使用1.进程相关概念1.什么是程序,什么是进程,有什么区别程序是静态的概念,gcc xxx.c -o pro,磁盘中生成的pro文件叫程序进程是程序的一次的活动,只要程序跑,系统中就多了一个进程2.如何查看进程ps 或ps -aux|grep 要查找的进程grep用来过滤例:ps -aux|grep init使用top指令查看,类似windows任务管理器3.什么是进程标识符每个进程都有一个非负整数表示唯一ID,叫做pid,有点原创 2021-01-24 00:21:43 · 342 阅读 · 0 评论 -
Linux系统C语言文件编程
目录1.文件打开及创建2.文件写入操作编程3.文件读取操作4.文件光标移动操作5.计算文件大小6.文件打开创建的补充7.创建文件create函数8.文件操作原理概述9.文件操作CP指令1.文件打开及创建#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>int main(){ int fd; fd = open("./file1",O原创 2021-01-22 14:42:37 · 735 阅读 · 2 评论 -
基于Wemos D1的感应开盖垃圾桶
硬件平台介绍 WeMos D1特性基于ESP-8266EXArduino兼容,使用arduino IDE来编程11 * I/O 引脚1 * ADC引脚(输入范围0-3.3V)板载5V 1A开关电源(高输入电压24V)工作中和STM32模块开发类似,集成度高更经济便宜软件环境介绍Arduino开发环境优点:集成很多开发库如串口,网络,sg90等各种硬件开发接口,迅捷开发自带串口调试工具缺点:1.程序编译速度慢...原创 2020-12-29 15:21:26 · 526 阅读 · 0 评论 -
Linux系统中利用ncurses实现贪吃蛇小项目
附上代码:#include <curses.h> //ncurses库#include <stdlib.h> #include <pthread.h> //线程库#include <unistd.h> #define UP 1#define DOWN -1#define LEFT 2#define RIGHT -2typedef struct snakes{ int row; //行 i原创 2021-01-20 15:49:45 · 284 阅读 · 0 评论 -
Linux线程概念引入及编程实现
#include <stdio.h>void func1(){ while(1){ printf("This is func1\n"); sleep(1); }}void func2(){ while(1){ printf("This is func2\n"); sleep(1); }}int main(){ func1(); func2(); return 0;}上面的代码我们可以知道两个函数里面都设置了while(1)死循环,所原创 2021-01-19 15:36:56 · 237 阅读 · 0 评论 -
数据结构与算法(C语言)校园导航系统
此程序是为了完成课程设计,由于教学安排中途停止了这个项目程序的进度。为了记录课程设计的完成情况与成果,斗胆把不完善的程序放在博客,如果有哪些大佬需要进行完善使用,我十分欢迎!!!目录(1)校园景点图的创建(2)校园景点图的显示(3)关于路径的算法及相关(4)界面及景点公告栏等操作设计详细程序可以看我上传的资源:记录一处BUG:进入 “管理员登入” 后,选择 “退出界面” 后返回主界面,再选择 “退出系统”,退出界面5S后会进入游客登入的界面。(1)校园景点图的创建void Crea.原创 2021-01-11 13:50:11 · 6772 阅读 · 4 评论 -
字符串操作常用函数
几种常用的API输出字符串puts()printf("%s",p)'获取字符串gets() //内存是否合法scanf("%s",p)计算长度strlen初始化memset //memset( params初始化对象, 初始化成什么字符, 多大)拷贝strcpy //strcpy(目标,复制对象)strncpy //拷贝的最大长度 strncpy(目标,复制对象,长度)拼接strcat //strcat(一个字符串,需要拼接的另一个字符串)比较strcmp /原创 2020-12-25 16:29:15 · 351 阅读 · 0 评论 -
指针变量的类型及含义
1.定义整型变量:int a2.定义p为指向整型数据的指针变量:int *p3.定义整型数组a,它有5个元素:int a[5]4.定义指针数组p,它由4个指向整型数据的指针元素组成:int *p[4]5.p为指向包含4个元素的一维数组的指针变量:int (*p)[4]6.f为返回整型函数值的函数:int f()7.p为返回一个指针的函数,该指针指向整型数据:int* p()8.p为指向函数的指针,该函数返回一个整型值:int (*p)()9.p为一个指针变量,它指向一个整型数据的指针变量:i原创 2020-12-24 03:54:23 · 4516 阅读 · 1 评论 -
计算出数组中有多少个元素
一个整型数占用空间4个字节;一个字符型数组的空间1个字节C语言中计算a数组的大小是printf("a数组的大小是%d\n",sizeof(a));C语言中计算一个整型数组的空间是printf("一个整型数组的空间是%d\n",sizeof(int));C语言中计算一个字符型数组的空间是"printf("一个字符型数组的空间是%d\n",sizeof(char));C语言中计算数组中元素的个数: 数组的总大小 / 一个类型的大小即:sizeof(a) / sizeof(a[0])...原创 2020-12-24 00:33:51 · 5022 阅读 · 1 评论 -
出栈序列的合理性《数据结构》
#include <stdio.h>int m,n,k;int STACK[1010];int Out_STACK[1010];void Judeg_Stack(){ while(k--) { int flag = 1; int i; int Stack_index1 = 1; int Stack_index2 = 1; int Stack_top = 0; for( i=1原创 2020-12-14 10:01:59 · 513 阅读 · 0 评论 -
C语言字符串处理函数
puts函数——输出字符串的函数 其一般形式为:puts (字符数组) 其作用是将一个字符串(以’\0’结束的字符序列)输出到终端。假设已定义str是一个字符数组名,且该数组已被初始化为“china”。则执行:puts (str) 其结果是在终端上输出"China",由于可以用 printf函数 输出字符串,因此puts函数用的不原创 2020-05-09 17:28:40 · 1335 阅读 · 0 评论 -
C语言利用结构体查看电话号码
编写一个程序,输入若干人员的姓名及电话号码(11位),以字符’#’表示结束输入。然后输入姓名,查找该人的电话号码。不允许出现同名。输入样例1:在这里给出一组输入。例如:wanglin 18303721616zhaohaojie 18303721919zhangli 18303721010#zhaohaojie输出样例1:在这里给出相应的输出。例如:number is 183...原创 2020-04-16 17:10:15 · 6423 阅读 · 1 评论 -
C语言利用结构体进行成绩排序
题目 有n名学生的信息(包括学号、姓名和成绩),编写函数实现按成绩由高到低的顺序输出学生的信息。输入格式:输入一个正整数n(n<50),下面n行输入n个学生的信息,包括:学号、姓名、成绩。输出格式:输出从高到低排序后的学生信息,包括:学号、姓名、成绩。输入样例:在这里给出一组输入。例如:3101 Zhang 78...原创 2020-04-10 21:12:46 · 11438 阅读 · 5 评论 -
C语言利用结构体求一年中的天数
题目 在主函数中输入年月日,利用days函数计算该天是本年中的第几天。定义一个结构体变量(包括年、月、日)。提示:声明结构体类型struct y_m_d,成员为year、month、day。根据题目,需要考虑闰年的情况。输入样例:在这里给出一组输入。例如:2020 3 1输出样例:在这里给出相应的输出。例如:61...原创 2020-04-10 21:08:29 · 2176 阅读 · 0 评论 -
C语言用函数指针实现数组排序
最近看C语言有点烦,无论是自学的数据结构还是学校的指针课程,看着头都大了。学校在PTA安排了此题,提交了多次总是报错,今天重新整理一遍且不按题目编程提示来写,提交终于正确。(其实是最后一个数字不能有空格,而题目没有说明白)将此题记录一下,说不定某些小伙伴需要呢?此题可能不是标准答案,仅作参考。输入10个整数进行排序并输出,其中用函数指针编写一个通用的排序函数,如果输入1,程序实现数据按...原创 2020-04-08 14:29:44 · 17709 阅读 · 4 评论 -
C语言矩阵转置
编写函数,求一个3×3矩阵的转置矩阵。(1)编程提示转置矩阵,将原矩阵的行变为列,列变为行。注意,通过指针访问二维数组时的方法。本题采用的是指向数组元素的指针变量。输入样例:1 2 34 5 67 8 9输出样例:1 4 72 5 83 6 9注意:此题输出的每行的最后一个数不能有空格#include <stdio.h>void Trans(int(*p)[...原创 2020-04-02 19:09:29 · 5814 阅读 · 0 评论 -
C语言用指针知识按要求输出5*5矩阵
用指针知识将一个5×5矩阵的最大值放在中心,四角按从左到右,从上到下的顺序存放最小值。 编程提示:利用打擂台法求最大值和最小值。输入样例:输入数据,之间用空格分隔,例如11 12 13 14 1521 31 66 88 2310 42 68 31 3565 68 99 82 2971 72 73 74 75输出样例:输出格式数据格式如下,用一个空格分隔10 71 75 14 1...原创 2020-04-02 18:44:04 · 7612 阅读 · 4 评论 -
C语言计算学生平均分及某个学生成绩
有3个学生,每个学生有4门成绩,用指向二维数组的指针求(1)计算总平均分数(2)输出第n个学生的成。输入样例:85 97 80 10089 87 90 8190 99 86 702输出样例:87.889.0 87.0 90.0 81.0#include <stdio.h>float get_avg(float *p,int n){ int i; float ...原创 2020-04-02 18:00:33 · 7113 阅读 · 0 评论 -
汉诺塔C语言步骤解析
汉诺塔问题在C语言中一般采用递归法来写,假设有A、B、C三根棒,A棒放着若干个圆盘,将其移动到C棒上,中途可在B棒中暂时放置圆盘。分析:(1) 如果只有一个圆盘,则把该圆盘从A棒移动到C棒(2) 如果圆盘数量n>1,移动圆盘的过程可分为如上图三部分第一步: 将A棒上的n-1个圆盘移动到B棒上。第二步: 将A棒上的一个圆盘移动到C棒上。第三步: 将B棒上的n-1个圆盘移动到C棒上...原创 2020-03-05 19:39:52 · 7361 阅读 · 6 评论 -
C语言求斐波那契数列的第n项
函数递归解法:#include<stdio.h>int cn(int n){ if(n==0||n==1) return 1; else return cn(n-1)+cn(n-2);}int main(){ int n; long long c; while(~scanf("%d",&...原创 2020-02-29 05:43:13 · 7725 阅读 · 2 评论 -
C语言利用选择法与冒泡法进行排序
弟弟我就要期末考了,C语言还是垃圾的1Pi,刷题中 发现排序问题,可以根据选择法与排序法来写。哎,选择与冒泡搞得不是很清楚只好写一篇博客记录一下了。题目描述本题要求将给定的n个整数从大到小排序后输出。输入格式:输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。输出格式:在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。输入样例:在这...原创 2019-12-29 15:13:28 · 1554 阅读 · 2 评论