C/C++
文章平均质量分 84
本专栏主要是对平时C开发的一些知识点进行记录和详细记录讲解,另外C++的一些特征进行学习讲解
ftzchina
这个作者很懒,什么都没留下…
展开
-
C语言----文件操作(二)
在上一篇文章中我们简单介绍了在C语言中文件是什么以及文件的打开和关闭操作,在实际工作中,我们不仅仅是要打开和关闭文件,二是需要对文件进行增删改写。本文将详细介绍如果对文件进行安全读写。原创 2023-12-16 06:00:00 · 1988 阅读 · 0 评论 -
C语言----文件操作(一)
对于文件想必大家都很熟悉,无论在windows上还是Linux中,我们用文件去存储资料,记录笔记,常见的如txt文件,word文档,log文件等。那么,在C语言中文件是什么样的存在呢,我们又怎么去操作文件,操作文件中又需要注意什么。在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。在C语言中对文件的操作也是有规定的。如果不按规定来文件操作很容易出Bug,而且还不好查。原创 2023-12-10 13:16:48 · 1309 阅读 · 0 评论 -
C语言----静态链接库和动态链接库
一文读懂C语言的静态库和动态库原创 2023-11-11 21:21:39 · 1943 阅读 · 0 评论 -
基于GCC的工具objdump实现反汇编
在 Linux中,一切皆。Linux 编程实际上是编写处理各种的代码。系统由许多类型的文件组成,但目标文件具有一种特殊的设计,提供了灵活和多样的用途。目标文件是包含带有附加地址和值的助记符号的路线图。这些符号可以用来对各种代码段和数据段进行命名,包括经过初始化的和未初始化的。它们也可以用来定位嵌入的调试信息,就像语义 Web,非常适合由程序进行阅读。objdump命令是Linux下的或者的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。另外需要讲一下符号表,后面会用到。原创 2023-11-08 21:14:42 · 5009 阅读 · 1 评论 -
GCC编译器
gcc介绍原创 2023-11-05 19:45:54 · 226 阅读 · 0 评论 -
C语言编译过程总结
开发C程序有四个步骤:预处理、编译、汇编和链接。任何一个体系结构处理器上都可以使用C语言程序,只要该体系结构处理器有相应的C语言编译器和库,那么C源代码就可以编译并连接到目标二进制文件上运行。我们创建一个test.c为例来讲解程序编译的过程。原创 2023-11-04 21:26:18 · 739 阅读 · 0 评论 -
C语言----详解socket通信
刚接触socket的同学想必也知道socket的中文名,套接字,与其说是中文名倒不如说这是什么玩意,我们先不要管中文名的实际意义,我们先来了解一下什么是socket。我们上网产生的数据都是经过协议栈一层一层的封装然后经网卡发送到网络,经网络发送到服务端,然后服务端又是一层一层的解封装拿到自己想要的数据。对于协议栈都是集成在操作系统里,我们并不需要关心TCP,UDP等这些协议是如何实现的,我们关心的是我们的应用程序的数据能不能正常的发送出去和接收服务端发回来的数据。原创 2023-09-01 14:50:10 · 6602 阅读 · 3 评论 -
C语言----输入scanf和输出printf详解
C语言编程中,输入输出是基本操作,printf和scanf并不是C语言中的唯一的输入输出选择,对于输入有scanf()、getchar()、getche()、getch()、gets();对于输出有printf()、puts()、putchar(),他们各有自己的使用场景,本篇文章主要介绍常用的scanf和printf。原创 2023-08-11 09:59:26 · 4290 阅读 · 0 评论 -
C语言----字符串操作函数汇总
在C的库函数中,有丰富的字符串操作函数,在平时的coding中灵活运用这些库函数会达到事半功倍的效果。原创 2023-08-08 20:00:28 · 285 阅读 · 0 评论 -
C语言----字节对齐
C语言字节对齐原创 2023-08-05 15:13:16 · 4269 阅读 · 0 评论 -
C/C++线程绑核详解
在一些大型的工程或者特殊场景中,我们会听到绑核,绑核分为进程绑核和线程绑核。绑核的最终目的都是为了提高程序和性能或者可靠性原创 2023-06-03 16:44:06 · 3957 阅读 · 0 评论 -
C语言----类型强转
在C语言代码中我们经常会遇到对变量进行类型强转,如果没有深入理解类型强转,很容易引入代码bug,比如把int类型强转成char就有可能会截断数据,后面代码流程会造成意想不到的错误。这里将会总结一下C语言里的类型强转,建议在安全的前提下进行类型转换。原创 2023-06-01 22:33:31 · 1310 阅读 · 0 评论 -
基于easyX实现俄罗斯方块
一:效果展示二:环境准备1,安装VS,目前最新版本是VS2022,安装方法可以参考我的博客手把手教你安装VS2022_ftzchina的博客-CSDN博客一:官网下载地址Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器Visual Studio 开发工具和服务让任何开发人员在任何平台和语言的应用开发都更加轻松。 随时随地免费使用代码编辑器或 IDE 进行开发。https://visualstudio.microsoft.com/zh-hans/?r.原创 2022-03-11 16:07:00 · 4365 阅读 · 1 评论 -
手把手教你安装VS2022
一:官网下载地址Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器Visual Studio 开发工具和服务让任何开发人员在任何平台和语言的应用开发都更加轻松。 随时随地免费使用代码编辑器或 IDE 进行开发。https://visualstudio.microsoft.com/zh-hans/?rr=https://www.microsoft.com/zh-cn/二:下载VS下载选择的时候需要注意有三个选项,Professional是个人试用版,Ente..原创 2022-03-10 21:25:42 · 2428 阅读 · 0 评论 -
GDB调试命令详解
一、gdb简介GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c/c++程序员,gdb是必不可少的工具;二、gdb使用1,断点设置断点:b 行号|函数|清除断点:delete [breakpoints num] [range…]显示断点:info breakpoints条件断点:b fn1 if a>bdelete可删除单个断点,也可删除一个断点的集合,这个集合用连续的断点号来描述。例原创 2022-02-18 15:15:12 · 5039 阅读 · 0 评论 -
linux下C语言多线程编程总结
一:线程的创建与等待线程创建函数: Create a new thread, starting with execution of START-ROUTINE getting passed ARG. Creation attributed come from ATTR. The new handle is stored in *NEWTHREAD. extern int pthread_create (pthread_t *__restrict __newthread,原创 2021-11-29 20:45:18 · 1418 阅读 · 0 评论 -
C++面向对象的三大特性----封装
学习封装之前,我们想想为什么一个类里面有public、protected、private三个关键字来控制成员变量和成员函数的访问权限。通过三个关键字可以更加灵活的让编程者或者调用者去决定类的哪些变量和成员函数可以向外暴露,可以供使用者调用,哪些不能被调用或修改。private 关键字的作用在于更好地隐藏类的内部实现,该向外暴露的接口(能通过对象访问的成员)都声明为 public,不希望外部知道、或者只在类内部使用的、或者对外部没有影响的成员,都建议声明为 private...原创 2021-11-23 19:02:23 · 233 阅读 · 0 评论 -
C++面向对象的三大特性----多态
一文帮你理解和掌握C++的多态原创 2021-11-20 11:02:53 · 824 阅读 · 0 评论 -
C++面向对象的三大特性----继承
目录一:继承的概念二:C++三种继承方式三:继承常见的问题1,名字遮蔽问题2,类的构造函数不能被继承3,类的析构函数不能被继承 龙生龙,凤生凤,老鼠的儿子会打洞。老鼠的儿子生来就会打洞是因为他老爹把打洞的基因传给他了,换句话说老鼠的娃继承了他爹打洞的本领,他不用从头摸索怎么去打洞而是捡现成的,天生的。继承的作用有多大? 继承了皇位还要啥C++,本篇文章到此就可以返回了,不用往后看了。 咱们言归正传,本篇文章将会详细...原创 2021-11-16 20:13:24 · 217 阅读 · 0 评论 -
一文帮你读懂C++的命名空间
记得最开始写C++代码的时候就是依葫芦画瓢,每个小程序前面都有下面的一行代码using namespace std;只是知道是命名空间有关的,但具体详细什么是命名空间却不是很清楚,看了这篇文章你将会掌握什么是命名空间,命名空间的由来,为什么程序前面要加using namespace std一:什么是命名空间随着工程的日益复杂性,一个大的代码工程往往由多名程序员并行开发,待各个模块开发完成后一起联调。由于大家都处于同一个公司,往往一个公司的代码...原创 2021-11-12 18:33:31 · 392 阅读 · 0 评论 -
C语言printf打印16进制占位左右对齐,左侧不足补0
工作中有个小需求就是对一批16进制的数据进行处理然后以0x的方式打印出来,要求格式和原先数组的排列方式是一样的,即右对齐,占位为5个。 我们首先看下我们需要打印的数组static const unsigned char arrPrint[256] = { 0x66, 0x7f, 0x7a, 0x7e, 0xf5, 0x6e, 0x72, 0xc8, 0x33, 0x4, 0x6a, 0x2e,0x101, 0xda, 0xae, 0x79, 0x...原创 2021-10-26 11:46:04 · 7337 阅读 · 0 评论 -
C语言获取本机IP地址
我们借助socket来进行IP地址的获取。如果对socket编程比较陌生的话,可以先学习一下socket编程。不过在本文中,依然还会简单介绍一下用到的函数。 先看代码#include <stdio.h>#include <stdlib.h>#include <sys/ioctl.h>#include <net/if.h>#include <arpa/inet.h>#include <sys/s...原创 2021-08-26 09:37:50 · 8723 阅读 · 1 评论 -
C语言(Linux)生成随机未被使用的端口号
在C/S模型中,服务端经常要把服务绑定一个端口号,服务端监听这个端口号提供相关的服务。在某些场景中,不能使用固定的端口号,那么如何生成随机未被使用的端口号?netstat -an | grep :xxxx 该shell命令是过滤出xxxx监听端口,如果xxxx端口没有被使用,则过滤出来的是空。C语言调用system函数执行该命令,如果端口被占用,则system的返回值为0,如果未被使用,则返回值为256,这样我们就可以根据system函数的返回值来确认端口有没有被使用。 ...原创 2021-08-25 11:20:58 · 1292 阅读 · 0 评论 -
C语言系统调用去掉nohupt提示nohup: redirecting stderr to stdout
在C语言代码中,要执行shell命令,一般会调用system函数或者popen函数。最近遇到一个问题,就是用system调用一个Python程序在后台运行,常规操作如下char pythonCmd[50];snprintf(pythonCmd,50,"cd xxpath && nohup python3 xxx.py &");if(system(pythonCmd) == -1){ printf("exec cmd error");}这时候在终端界面上会打印原创 2021-08-25 09:51:34 · 720 阅读 · 0 评论 -
C语言开发笔记
一,snprintf拼接字符串1,原来字符串有值,后面拼接一个字符串#include <stdio.h>#include <stdlib.h>int main(){ char ori[100] = "I love "; char *afterStr = "you"; snprintf(ori+strlen(ori),strlen(afterStr)+1,"%s",afterStr); printf("%s\n",ori); return 0;原创 2021-06-11 09:40:19 · 843 阅读 · 0 评论 -
C语言全局变量重复定义检查-fno-common
在用C语言开发大型的工程中,由于文件众多,在各种机缘巧合下会出现全局变量重复定义,那假如出现这种情况是什么现象呢首先来看看一个全局变量重复定义用例例一:testA.c文件#include <stdio.h>#include <stdlib.h>extern void printf_testB();int a;int main(){ a=10; printf("testA.c a=%d,&a=%p\n",a,&a); prin原创 2021-02-02 17:01:20 · 4198 阅读 · 0 评论 -
C语言钩子函数详解
钩子函数,从表面意思上看就不是一个名门正派,拿同事的话讲这个就是一个下三滥的手段(哈哈哈),不过对于初学者碰到钩子函数可能会有点蒙圈。正好最近又遇到了这个钩子函数,所以通过例子来详细讲解一下钩子函数,顺便也科普C语言一个完整的功能模块创建规范是什么样的。钩子函数本质上一个函数指针。这时候讲一些钩子函数什么作用,为什么要用钩子函数,可能大部分都听不懂,所以还是通过例子来解释。我们例子要实现一个什么样的功能,我们要引用一个静态库,里面有个函数初始化了三个学生的姓名,存储在结构体里,如何通过钩子函数来将三个学原创 2021-01-23 21:48:15 · 4755 阅读 · 1 评论