![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
蛋炒鸡丁小饭团
一位喜欢研究计算机安全的灰帽子,GitHub不会展示更具体的仓库。
展开
-
malloc(): corrupted top size
写一个加密算法,在加密完成之后输出结果时抛出此错误。看了一下百度上的说法,说是malloc函数的问题,我仔细检查了一下我的malloc语句。没有越界,没有返回空指针,其他相关的内容也是正常的。原创 2023-01-02 20:44:21 · 4070 阅读 · 0 评论 -
【VSCode】The ‘clang-format‘ command is not available.
如果你使用了Microsoft开发的C/C++扩展,那其实不需要专门去配置一个clang-format,因为C/C++扩展默认使用clang-format来格式化代码。去安装LLVM,并将其添加到环境变量中。去安装clang-format。原创 2022-12-26 22:42:13 · 1675 阅读 · 0 评论 -
【Linux网络编程】域名转IP后的一些深层(计算机底层)的思考
结语C语言是一个非常灵活非常不可思议的语言,只要你掌握好了它,那么你就可以在计算机中做任何你想做的事情。原创 2022-12-25 23:52:52 · 730 阅读 · 1 评论 -
【Linux】C: undefined reference to `SHA256‘
在Linux系统编写一些程序的时候出现了这个报错。但是我的gcc命令行参数中已经加上了这两个参数于是我上网查了很久,但是也没有任何用处。原创 2022-10-14 02:01:30 · 1030 阅读 · 0 评论 -
【C/C++】教你完整读取大文件数据
以前对C语言与C++不够了解时,我无法知道如何完整获取一个文件的所有数据并且不遗漏掉。在网络上也搜索了很多很多的相关帖子,但是没有一个是真正有用的。原创 2022-09-11 12:41:37 · 4158 阅读 · 6 评论 -
解决【命令行/终端】颜色输出问题
通常我们在想让终端输出颜色的时候会使用到颜色代码,比如\x1b[31m,但是在Windows系统中不管使用哪一种语言来输出这个颜色代码,可能最终都会变成乱码。有的人的Windows系统可能不会出现这个问题,但如果你接触的系统多一些就会明白这个问题产生的原因。在Linux系统中,是从未出现过这种问题的,为什么?因为Linux默认使用的是UTF-8编码,而绝大多数Windows系统使用的是GB系列的编码比如GBK,GB2312,GB18030。编码不同也就导致了输出的结果不同。...原创 2022-08-03 10:44:17 · 613 阅读 · 0 评论 -
【C语言指针】用指针提升数组的运算效率
指针对于整个大项目的效率提升是非常明显的,请不要忽视这个非常棒的C语言功能。原创 2022-07-30 09:12:14 · 560 阅读 · 0 评论 -
【C/Python联动编程】Python使用C动态库
为什么使用C动态库?众所周知,Python的运行效率实在太低。原创 2022-07-29 13:55:22 · 248 阅读 · 0 评论 -
【C/C++】fread函数与C语言基础的一些讲解
我想实现一个功能,就是打开一个文件,然后按照某个特定的区块来读取它,将每个区块加密之后再写入到另一个文件中。但很快,我发现了一个问题,fread函数似乎没办法正常完整读取文件?以下是我的源代码主要部分0};FILE*fp=fopen("文件名","rb");do{}while(!文件的原内容是这样的经过上面的代码之后,输出结果是这样的。看起来就像是文件并没有被完整读取或者很好的读取,是fread函数的问题吗?...原创 2022-07-19 09:33:46 · 1636 阅读 · 0 评论 -
【C/C++/Python】获取当前用户是否为root用户
前言以下代码均运行在x86_64 GNU/Linux的系统中Pythonimport osif not os.geteuid(): print("root.")else: print("Not root.")C/C++#include <stdio.h>#include <unistd.h>int main(){ uid_t a; a = geteuid(); if (a != 0) { printf("Not root原创 2022-05-11 14:44:16 · 914 阅读 · 1 评论 -
【C/C++】编写自己的真随机函数【纳秒级】【已修正】
文章目录前言代码前言通常想要使用随机数的时候,在网络上搜索,他们只会告诉你用srand播种。而且是以秒为单位,这就有了个巨大的问题,而且这个问题在Windows系统中不算常见但是在Linux中的必出的问题。通常网上的教程会教你这么写随机种子srand((unsigned)time(NULL));这样写没什么问题,但是如果你想执行一个非常快的语句,比如for循环,就会出现问题。比如下面这段代码for(int x = 0; x < 4096; ++x) { printf("原创 2022-04-12 12:57:17 · 2755 阅读 · 1 评论 -
Python中定义(声明)结构体
文章目录前言实现前言在Python中并无像C/C++那样的结构体类型,但是由于Python是用C编写而来的,很多东西可以互通。Python是有struct模块,但并非是用于处理一般结构体的,并且使用起来也比较麻烦。实现我们可以使用Class类来实现一个在C/C++中呈现的结构体,也可以实现C/C++中typedef struct {}的方法。# 首先定义一个类,要有__init__class SN: def __init__(self): self.data =原创 2022-04-11 13:53:35 · 47194 阅读 · 0 评论 -
【解决方法】Socket服务端退出之后端口依旧被占用
索引C/C++Python结语说明:以下代码均为Linux环境,我会给出Windows环境的改动。C/C++通常情况下,我们写Bind端的话只会设置发送/接收超时,所以会导致一个系统资源占用的问题。即程序已经执行完毕,但是端口仍然被占用着,且无法杀死进程。解决方法是在bind之前配置setsockopt,用于设置TIME_WAIT的时间。// Linux写法int s = socket(AF_INET, SOCK_STREAM, 0);setsockopt(_sock, SOL_原创 2022-04-02 20:58:40 · 3456 阅读 · 1 评论 -
Windows环境找不到OpenSSL库/OpenSSL头文件【编译错误】
目录前言解决前言前几天在Github上把OpenSSL官方的源码拷贝下来准备自己写爬虫(Python的代码写腻了,打算用C/C++来写)。结果编译的时候一直报错#include <openssl/tls1.h>,我试了好多种办法都没用,比如下面的这些方法。gcc main.c -lwoskc32 -lssl -lcrypto -I w:\OpenSSL\include\openssl\ -L w:\OpenSSL\libgcc main.c -lwoskc32 -lssl -lcr原创 2022-03-28 23:40:22 · 5787 阅读 · 0 评论 -
malloc和calloc的用法与区别【C/C++】
以下代码均运行在x64环境中目录callocmalloc区别callocvoid *calloc(size_t _NumOfElements, size_t _SizeOfElements)上面是calloc函数的原型,其中_NumOfElements 代表需要申请的内存空间长度_SizeOfElements 代表长度中单个元素的大小可能不是特别好理解这段话,下面可以通过一个简单实例来查看。char *str = (char *)calloc(32, sizeof(char *));.原创 2022-03-13 13:14:16 · 559 阅读 · 0 评论 -
C/C++ 获取数字(整数)长度(位数)
#include <stdint.h>// 这是一个数字,长度为 3.uint32_t num = 255;在某些情况下我们需要获取一个数字的长度,但是又碍于C/C++中没有现成的函数。那就自己写一个。uint64_t numlen(uint64_t num){ uint64_t len = 0; // 初始长度为0 for(; num > 0; ++len) // 判断num是否大于0,否则长度+1 num /= 10原创 2022-03-12 23:17:07 · 26290 阅读 · 2 评论 -
未定义标识符 “HINSTANCE“ 与 int WINAPI WinMain报错的解决方法
请先检查你的c_cpp_properties.json文件,以下是我的json文件// "compilerPath": "H:\\Cygwin\\bin\\gcc.exe",// "intelliSenseMode": "windows-gcc-x64","intelliSenseMode": "linux-gcc-x64","compilerPath": "/usr/bin/gcc"因为之前在Linux中编写C++,切回Windows系统后忘记修改json文件了,于是只要把Linux的那两行原创 2022-02-27 15:11:57 · 2337 阅读 · 0 评论 -
学习C语言 - 推荐书籍
前言可能有些人和我一样,学完某些机构写的《C语言 从入门到精通》之后感觉自己并没有掌握什么实际的知识,不过就是摸到了C语言的皮毛,确实,那些机构基本也写不出什么深度的东西,还是得看大神们的书籍。避免抄袭嫌疑,此处贴出声明,前五本书的描述使用的是此篇文章的。C语言之父:我创造了C语言,但这些书帮我表达了出来排名不分前后《The C Programming Language (2nd Edition)》作者Brian W. Kernighan与Dennis M. Ritchie(C语言之原创 2022-02-17 21:45:16 · 1590 阅读 · 1 评论 -
‘iostream‘ file not found
前言今天在Windows平台使用VSCode写代码时突然跳出个这个语句'iostream' file not found对于我这种“错误”强迫症来讲完全不能忍,但是在网上也没找到什么解决办法(这是我检查了IncludePath后说的,如果你的IncludePath有问题会导致VSCode报错)解决我把有可能的插件全部测试了一遍,最后发现是C#插件导致的,于是我就把它卸载了,反正要写C#的时候用Visual Studio就行了部分情况下,TSLint插件也可能导致这个报错。...原创 2022-02-16 08:45:30 · 3960 阅读 · 1 评论 -
简单谈谈 C/C++ 区分用户输入的是字符还是数字
众所周知计算机大部分时候使用的编码格式都是ASCII (美国信息交换标准代码)而在ASCII内,数字使用十六进制的10个值表示,它们分别是十六进制代表数字0x3000x3110x3220x3330x3440x3550x3660x3770x3880x399而字符的话是在其他十六进制值内,范围为 0x20 ~ 0x7E (不包括上表),具体就不展开了,可自行编写代码1查看或者查看这篇内容ASCII于是只需原创 2022-01-11 15:33:00 · 1645 阅读 · 0 评论 -
gcc/g++编译后程序丢失.dll
前言一般情况下,gcc或者g++是动态链接库文件的,所以就会导致将程序移动到其他计算机上时报dll丢失的警告。目前解决方案有两个方法1将对应的dll文件放置在目标计算机对应的目录下,比如程序当前的目录或者System32目录方法2使用静态链接,简单点说就是把需要的库直接嵌入程序中,不过这样也会导致程序大小比动态链接时要大一些g++ demo.cpp -static -o demo.exe...原创 2021-12-19 21:42:11 · 753 阅读 · 0 评论 -
C/C++ 【获取数组长度】
万能的语句此行代码可获取整型数组与字符数组的长度,且同时支持是否设置初始长度size_t Length=sizeof(array)/sizeof(array[0]);C++有另外一个获取字符数组长度的方法(只能获取字符数组长度)#include <string.h>int Length=strlen(array);...原创 2021-12-14 13:46:03 · 1474 阅读 · 0 评论 -
VSCode C/C++【无报错提示的解决方法】
首先确定你将其他配置正确配置了,如果不知道有哪些配置,请看下面C/C++扩展插件设置C/C++扩展插件是否已经安装这个插件?已安装请看下一步设置1. 打开设置界面(不是JSON文件)2. 搜索prevent3. 将下图中Editor > Suggest: Snippets Prevent Quick Suggestions项取消勾选4. 搜索intellisense,拉到最下面5. 把C_Cpp: Intelli Sense Engine Fallback选.原创 2021-12-14 12:02:41 · 15491 阅读 · 15 评论 -
gcc/g++编译时找不到自定义头文件
前言注意C/C++的在编写方面的严格控制解决方法 - 1不在同一目录下,自然无法载入,将头文件放入工程文件的同一目录下解决方法 - 2头文件载入的写法错误#include <> // 是用来载入libc库中的头文件的,一般不会在当前目录查询有无对应名称的头文件#include "" // 是用来载入自己编写或者不在libc库中的头文件的。// 所以,只需要将你的代码中载入头文件的符号改一下就行Python用多了,总是容易忽略C/C++的这些细节问题.原创 2021-12-10 11:10:14 · 4580 阅读 · 0 评论 -
【Linux】g++ 段错误
前言写了一个函数,总共两个函数,一个主函数,一个自己写的函数g++编译后,运行发现段错误,搜了下没搜到什么有用的,就自己修改了一下代码,再次编译执行,好了先看看出问题的代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<string>#include<cstring>#include<istream>#include<fstream原创 2021-12-09 21:10:04 · 474 阅读 · 0 评论 -
【持续更新】C/C++与Python的语法, 代码的区别【写给自己也写给大家】
前言为什么我想写这篇文章,因为我发现自己有时候Python的代码写的太多了,回过头来发现自己忘记了很多C/C++的语法和代码。于是想通过这篇文章来给各位以及我自己重新温习一下它们的不同与相同之处。此文章会持续更新文章说明:前者代码块为C/C++的代码,后者是Python的代码原创 2021-12-07 17:21:31 · 1212 阅读 · 0 评论 -
【C++】完整获取数组长度【一行代码】
前言最近Python玩厌了,回去玩了会C++,然后在统计数组长度的时候各种出意外。众所周知,在C/C++中\x00是作为结束符的一个存在,不像Python即使有\x00也不影响获取长度这就导致写了个内容,但程序读取长度时读取不完整(因为在\x00处就停止读取了)我在网上搜了半天,Google也找了,没用。我自己琢磨了一会,弄好了。下面是正确姿势#include<iostream>#include <istream>using namespace std;in原创 2021-12-07 13:25:28 · 604 阅读 · 0 评论 -
【C/C++ Socket】collect2.exe: error: ld returned 1 exit status
检查头文件载入部分加上 #pragma comment(lib, "ws2_32.lib")#include <winsock2.h>#include <iostream>#include <cstring>#pragma comment(lib, "ws2_32.lib") //加上这个或者编译时加一个参数g++ demo.cpp -o demo.exe -lwsock32gcc demo.c -o demo.exe -lwsock32原创 2021-12-01 13:16:32 · 695 阅读 · 0 评论