C语言
C语言的知识点记录
持御
这个作者很懒,什么都没留下…
展开
-
strncpy一定要慎用!!!!!!
结论: strncpy(A,B,sizeof(A));这样写是不安全的。推荐snprintf! 当B的内容长度超过A时,遇到\0停止,并且不会自动追加\0。 snprintf会自动截断并追加\0。 如果使用strncpy一定要手动追加\0 代码测试: 今天在温习基础知识的时候,发现一个strncpy不太注意的点。但是在工作中还经常中strncpy,现在想一想一身冷汗。 使用strncpy和snprintf比对 测试结果 打印strncpy出错!!!! ...原创 2021-06-30 10:24:37 · 2466 阅读 · 0 评论 -
pw_gecos的命名含义
getpwnam()函数就会返回一个指针,指向如下类型的结构,其中包含了与密码记录相对应的信息: pw_gecos 字段,其命名源于早期的 UNIX 实现,该字段所含信息原用于与运行GECOS(通用电器综合操作系统)的计算机进行通信。虽然这一用途早已过时,但其名称却得以沿用至今,只是将字段用途转而用于记录用户的相关信息。 ...原创 2021-05-30 22:58:30 · 359 阅读 · 0 评论 -
【Linux嵌入式】我传进去指针进行组包,为什么组包结果为空,但是在组包函数中存在的??
今天遇见了一个让我当时怀疑人生的问题。 事情是这样的: 产品出现了某行数据不显示问题。然后我跟踪代码,跟踪到了数据组包发送LCD的地方。 奇怪的事情发生了,我传进去一个指针,将各种数组组包到这个指针地址上。在组包函数中,打印传入的指针,组包数据也都正常。 组包完成,退出组包函数,执行发送函数的时候,发送的数据包是空的!!!!! 奇怪的一匹。 在组包函数中的末尾打印组包结果都是正常的。 出来一调用,就为空了。 =========================================.原创 2021-05-13 20:18:15 · 113 阅读 · 0 评论 -
C语言实现转置9*9字符数组
问题描述: 有一个文本文件保存了9*9矩阵数据 通过回车换行分隔行 行内通过,分隔元素 1-9的数字是有效元素,其他内容都认为是空 要求 1. 实现矩阵转置 2. 矩阵内元素如果是数字进行1-9,2-8,3-7,4-6互相映射,即如果原来数字是1,改成9,如果是9改成1 下面是矩阵 , , , ,1, , ,3, 5, ,4, , , , , , , , , ,5,3,8, ,9 ,8,9, , , , , , , , , , ,1,6, , , , ,5,9, ,3,1, ,原创 2021-04-11 16:01:28 · 1448 阅读 · 0 评论 -
编译分类
选择性编译: 也就是我们常用的ifdefine防止头文件多次重复编译 #ifdef AAA #else #endif 动态编译: 动态编译是使用的动态库文件进行编译 gcc hello.c -o hello(一步到位) 默认使用的是动态编译的方法 静态编译: 静态编译使用的静态库文件进行编译 gcc -static hello.c -o hello 静态编译和动态编译的区...原创 2020-03-14 23:48:13 · 515 阅读 · 0 评论 -
字符溢出
当一个字符加上一个大于256的数字的时候,其实是字符的ASCII码值加上了(一个数对256取余的结果) 下面程序是对其验证(运行在Windows10环境的的codeblocks中) #include <stdio.h> #include <stdlib.h> int main() { char ch='a'; char tem='a'; pr...原创 2020-03-06 22:35:17 · 924 阅读 · 0 评论 -
将一个字符串插入到另一个字符串的指定位置。
实现程序,将一个字符串插入到另一个字符串的指定位置。并将插入的结果显示在屏幕上。 比如:将字符串”abc”插入到字符串”123456”的第三个位置,插入后的结果为:”12abc3456” 插入成功返回0 失败返回 -1 int fun(char *str,char *src,int n)//形参str为要插入的字符串,src为原字符串,n为插入的位置 { int src_len=0,s...原创 2020-03-13 09:36:28 · 2519 阅读 · 3 评论 -
字符串逆序
用到#include<string.h>的头文件 void str_reverse(char *str) { int len,i ,j=0; char temp; len =strlen(str); //得到字符长度 for(i=len-1;i>=len/2;i--)//对换一半的次数,=是为了偶数情况 { t...原创 2020-03-12 22:50:14 · 105 阅读 · 0 评论 -
Linux音乐播放器项目
项目功能: 读取lrc歌词, 调用mplayer播放器播放mp3歌词, 歌词实时显示 并且有歌词滚屏效果。 显示歌词进度表 在屏幕右侧显示一个字符动画 ps(因个人现阶段水平有限,无法在程序中控制mplayer的开启和关断,故只播放一首歌。) 效果图展示: 项目主要过程: 文件的读取操作 歌词切割成句,按格式读取时间和歌词 把时间和歌词用结构体保存 创建链表,将...原创 2020-03-12 11:05:47 · 1306 阅读 · 3 评论 -
制作字符动画前期准备,及代码
首先你需要下载一段视频,并改成英文名字(方便文件读取操作) 下载FreeVideoToJPGConverter这个软件将视频切成一帧一帧的图片 下载图片转文本的软件ascgen2tpzzfh 在使用的时候先导入一张图片,观察大小,别导出来了大小不对 记录好大小再点击文件批量导入。 导出后可以看到asii的文本文件 做到这里前期的准备工作就完成了。 软件连接:链接:https://p...原创 2020-03-12 12:28:06 · 1283 阅读 · 1 评论 -
LinuxC语言编程报错:.c文件错误:与‘函数名’类型冲突;.h文件附注:‘函数名’的上一个声明在此
出现这种错误是你声明的函数名和你的本体函数名里面有不同; 将其改为一样的就ok了!原创 2020-03-11 09:23:07 · 1706 阅读 · 1 评论 -
双向链表的查找,排序程序
双向链表相对于单向链表区别在于双向链表保存了上一个的地址,而单向链表只保存了下一个的地址; 这样的话其实双向链表就是一个圆形,固定的头是我们认为设定的 双向链表在排序和查找时候,如果采用从两边开始查找或者排序的需要解决奇偶的问题,再考虑这个问题的时候建议拿出笔在草稿纸上画图。 附上程序: #include <stdio.h> #include <stdlib.h>...原创 2020-03-02 23:08:57 · 1510 阅读 · 1 评论