C
文章平均质量分 57
C语言相关
谁吃薄荷糖
CSDN “博客专家”、
CSDN “2021年度博客之星 TOP 50-100(排名不分先后)”、
CSDN“每日一练·马桶打卡”发起人、
工程师职称(计算机专业)、
软件设计师(软考中级)
展开
-
【c/c++】isdigit()函数
isdigit是计算机C(C++)语言中的一个函数,主要用于检查其参数是否为十进制数字字符。函数定义:函数说明:函数所需头文件:返回值:原创 2022-12-03 15:16:38 · 11340 阅读 · 8 评论 -
「 C/C++疑难杂症 」warning: ISO C++ forbids converting a string constant to ‘CHAR*’ {aka ‘char*’} [-Wwrite
文章目录🔴问题描述:🟠问题分析:🟡解题思路:🟢C++代码:🔵结果展示:🔴问题描述:写的一个小demo,发现编译时有告警。HisFault.cpp: In constructor ‘CHisFault::CHisFault()’:HisFault.cpp:37:29: warning: ISO C++ forbids converting a string constant to ‘CHAR*’ {aka ‘char*’} [-Wwrite-strings] Init(HISFAULTDB原创 2022-05-25 14:57:09 · 1431 阅读 · 8 评论 -
「 C / C++ 」已知总条数,每页条数,计算总页数
文章目录🔴需求描述:🟠需求分析:🟡解题思路:法一法二法三🟢C++代码:🔵结果展示:🔵C 库函数 - ceil()描述声明参数返回值🔴需求描述:项目中用到文件存储历史数据存数据,然后上位机读取的时候要按照分页来读,需要人为计算总页数。🟠需求分析:该需求可以转化已知总条数,每页条数,计算总页数的简单数学问题。🟡解题思路:法一使用%、?:与/运算,处理取余为0与不为0的情况法二思路类似上述,不过使用了ceil函数实现+1操作法三OnePageRawNum - 1是totalRawCount原创 2022-04-14 00:00:00 · 1633 阅读 · 16 评论 -
【unix时间戳小示例】linux/unix系统获取unix时间戳
unix时间戳unix时间戳是从1970年1月1日(UTC/GMT的午夜(0时0点0分))开始所经过的秒数,不考虑闰秒。C 库函数 - gmtime()C 库函数 struct tm *gmtime(const time_t *timer) 使用 timer 的值来填充 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。C 库函数 - mktime()C 库函数 time_t mktime(struct tm *timeptr) 把 timeptr 所指向的结构转换为自原创 2021-12-20 23:30:14 · 1247 阅读 · 14 评论 -
【快乐水题】709. 转换成小写字母
原题:[力扣链接:709. 转换成小写字母](https://leetcode-cn.com/problems/to-lower-case/题目简述:句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。例如,“Hello World”、“HELLO” 和 “hello world hello world” 都是句子。给你一个句子 s 和一个整数 k ,请你将 s 截断 ,使截断后的句子仅原创 2021-12-12 19:10:13 · 9955 阅读 · 22 评论 -
【C语言】动态分配二维字符串数组
动态分配一个二维字符串数组(1) 分配可能不连续的内存申请char**pps8Output = (char **) malloc(n * sizeof(char *));对于pps8Output而言,它获得了一块动态分配的连续内存,这块连续的内存可以放n个char *指针。下面为每一行malloc一次内存,这样分配的内存就不一定是连续的。for (int i = 0; i < n; i++) { pps8Output[i] = (char *) malloc(lens * si原创 2021-10-27 00:23:05 · 17497 阅读 · 98 评论 -
【快乐水题】412. Fizz Buzz
原题:力扣链接:412. Fizz Buzz题目简述:给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。answer[i] == “Fizz” 如果 i 是 3 的倍数。answer[i] == “Buzz” 如果 i 是 5 的倍数。answer[i] == i 如果上述条件全不满足。解题思路1.难点在动态生成原创 2021-10-18 09:20:51 · 10332 阅读 · 12 评论 -
【⚠️阴沟里翻船,这题都做错了!⚠️】C语言宏定义
前言快答题!直接上题,10秒之内报出a的值是多少!#include<stdio.h>#define SQR(x) x*xint main() { int a = 10, k = 2, m = 1; a/=SQR(k + m)/SQR(k + m); printf("%d\n", a);}大家答完了可以到文章末尾进行投票!楔子今天刷blink,看到一个新人在请教问题,题目代码如上,问a的值是多少。我看代码没几行,就想当然的脑算了一下,觉得结果肯定是10啊,原创 2021-10-13 20:31:57 · 11604 阅读 · 33 评论 -
【c语言 gcc9.1.0环境下编译报错】error: ‘true’ undeclared (first use in this function)
问题网上验证一个单链表是否有环的c语言demo,放到gcc9.1.0的环境下编译,发现编译报错:error: ‘true’ undeclared (first use in this function)分析发现是demo里使用到的true和flase编译报错了,原来gcc9.1.0下bool关键字还未支持。深入分析后发现,原来C语言(C99之前)中没有bool关键字。在C语言编程时,我们都是使用BOOL,但BOOL不是内置类型,一般都是通过typedef或者宏来定义的,通常都会被定义成int类型。原创 2021-10-11 15:07:24 · 15834 阅读 · 22 评论 -
【是泰波那契,不是斐波那契】1137. 第 N 个泰波那契数
原题:力扣链接:1137. 第 N 个泰波那契数题目简述:泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。解题思路1.参考斐波拉契数的套路写出n>=3的函数2.处理n = 0 1 2的特殊情况3.overC代码:int tribonacci(int n){ int first = 0; int s原创 2021-10-08 19:53:20 · 8185 阅读 · 22 评论 -
【快乐水题】509. 斐波那契数
原题:力扣链接:509. 斐波那契数题目简述:斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。解题思路1.根据公式写出n>1时的通项;2.处理n = 0 1时的特殊项;3.overC代码:int fib(int n){ int fir原创 2021-10-08 19:49:28 · 157 阅读 · 4 评论 -
【☘️C语言の单链表是否有环问题☘️】
问题:给定一个单链表,只给出头指针,如何判断是否存在环?思路:使用快慢指针法。使用两个指针(快(fast)、慢(slow))从链表头开始遍历此单链表。快指针每次走两步,慢指针每次走一步。如果有环:快指针和慢指针会相遇;如果无环:快指针走到单链表尾部,遇到NULL退出。类比思维:就是小学数学经常考的龟????兔????赛跑追击相遇问题:小兔子????速度快,小乌龟????速度为慢。它们从起点一起出发,赛道如果有环,他们一定都会在环里不停地跑,它们总归相遇;如果赛道没有环,小兔子????肯定很原创 2021-10-04 10:50:32 · 18172 阅读 · 32 评论 -
【✊基础不牢,地动山摇のC语言中static关键字✊】
C语言中static关键字用static声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。要降对象指定为静态存储,可以在正常的声明之前加上关键字static作为前缀。一个声明中最多只能有一个存储类说明符。如果没有指定存储类说明符,则将按照下列规则进行:在函数内部声明的对象被认为是auto类型;在函数内部声明的函数被认为是extern类型;在函数外部声明的对象与函数将被认为是static类型,且具有外部连接。如果一个对象或函数的第一个外部声明包含static说明符,原创 2021-09-27 19:18:45 · 10373 阅读 · 42 评论 -
【⛔C语言最熟悉的陌生人の你所不知道的scanf⛔】
引子CSDN最近搞了一个问答,我也没怎么关注,但是前几天收到一个广告,点进一看,回答首次被采纳,得现金红包!还有这种好事!想想我CSDN钱包里5块不到的余额,离100块的提现门槛的距离又近了一步!日入三毛,百万身价,指日可待啊!寻找问题说干就干,于是我就跑到问答版本开始寻找问题,为了保证采纳率,我选转了一圈,选择了一个看着就比较小白的问题,哈哈,想着这不是手到擒来啊!初中的物理知识派上了用场了!问题处理等等。。。摄氏度转华氏度咋转的。。。对不起初中物理老师。。。百度一下吧。。。摄氏温标(原创 2021-09-11 12:40:11 · 12130 阅读 · 18 评论 -
【❗划重点!C语言函数参数传递只有两种方式(值传递,地址传递),不支持“引用传递”!❗】
引子上篇文章《c语言函数传参の结构体数组篇》提到了C语言的函数传参方式,百度了一一一大圈,有说两种的,也有说三种的,简直把我搞晕了,其中有争议的地方就是“引用传递”方式。我看好多写三种方式的都把源代码代码贴出来了,也有打印信息,真的不能再真啊!难道打印会骗人?一定是哪里出了鬼了!我要打破沙锅问到底!排查经过多次测试验证,最后我发现和编译环境(gcc与g++编译器)有关,下面是对比验证过程:gcc 9.1.0#include<stdio.h> void myswap(int &原创 2021-09-03 16:07:17 · 18464 阅读 · 150 评论 -
【☀️C语言函数传参の结构体数组篇☀️】
背景介绍C语言中函数参数传递的两种方式(“引用传递做函数参数”是C++的特性,C语言不支持。)(1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。(2)传址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。一般有变量地址作为参数、数组名作为参数、指针作为参数。数组名作为参数时,传递的是数组的首地址,实参数组和形原创 2021-08-31 22:35:46 · 16951 阅读 · 34 评论 -
【⭐C/C++の深入浅出⭐】int数与多枚举值互转
int数与多枚举值互转在C/C++在C/C++的开发中经常会遇到各种数据类型互转的情况,正常的互转有:单个枚举转int数,int数转float数,float数转double数等。但是我们有时也会遇到多个枚举值与数字互转的情形(例如多个算法类型枚举开启标志转成数字,这个数字来表示多个标志位,按位来表示)。这样一个数字就能表示很多个标志位了,针对内存较少的嵌入式设备,这么操作可以达到节约内存消耗,提高程序运行效率的目的。Demo示例demo核心知识点:通过位运算符(布尔位运算符:"~"、"&"、"原创 2021-08-24 17:31:16 · 10578 阅读 · 32 评论 -
【⛸️拒绝手滑,我们都是稳准狠⛸️】C++のmemset函数的小探究
引子我们使用经常使用memset函数来初始化一些数据结构,常见的字符串数组、结构体、结构体数组。今天我要提出的是一个关于指针的初始化的小问题,很容易手滑写错了。强调一下错误示例,直接用指针来memset是不对的,并不能清空指针:void* p1 = &x;memset(p1, 0, sizeof(p1));所以我们为了避免memset手滑导致的错误,经常会自己封装一下memset函数,如“mzero(a)”宏所示,方便大家准确地使用。使用memset函数清空指针的demo如下:code:原创 2021-07-19 08:30:44 · 11013 阅读 · 115 评论 -
【☠️️社死现场の老板来了☠️️】小伙,搞C语言嵌入式开发这么久了,还不知道u8、u16、u32、s8、s16、s32是什么意思啊?
首先开门见山:u8是unsigned char,u16是unsigned short,u32是unsigned long;s8是signed char,s16是signed short,s32是signed long。然后娓娓道来:显而易见,u就是unsigned的缩写,s就是signed的缩写,8就表示8个二进制位(一个字节),16就表示16个二进制位(两个字节),32就表示32个二进制位(四个字节)。这样写的目的,是为了提高跨平台的移植性与兼容性。不同平台数据类型定义都不尽相同,一套代码要想.原创 2021-07-08 10:39:52 · 16851 阅读 · 130 评论 -
【搞openssl,看这篇就够了!】openssl1.1.1g编译(windows linux)
openssl1.1.1g编译智能sdk需要集成openssl以支持https,选用openssl1.1.1g版本,编译静态库集成。windows编译需要确保系统具备ActivePrel与nasm工具环境。win32版本编译使用vs2008自带的 32位命令行工具编译,在openssl-1.1.1g源码目录下输入指令: perl Configure VC-WIN32 no-shared no-asm no-tests nmak原创 2021-01-29 15:27:42 · 12864 阅读 · 4 评论 -
为什么 C++ 中提倡尽量避免使用宏 #define(转)
为什么 C++ 中提倡尽量避免使用宏 #define(转)转自:http://euyuil.com/blog/why-avoid-define-in-cplusplus/C++ 的书上常说,尽量不要用 #define 来定义常量。这究竟是为什么呢?其实 C++ 并不仅仅不提倡用宏来定义常量,而且还不提倡用宏来定义“函数”。事实上 C++ 并不是很喜欢预处理宏,在很多很多方面,如果不是必需,尽量不要使用预处理宏。为什么 C++ 不喜欢预处理宏?首先,预处理宏是“全局”的。所以,在 C++转载 2020-11-24 13:33:07 · 2709 阅读 · 0 评论 -
【一雪前耻!】两种方法判断大小端模式
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。下面以unsigned int value = 0x12345678为例,分别看看在两种字节序下其存储情况,我们可以用unsig...原创 2020-11-12 10:25:53 · 11014 阅读 · 2 评论 -
【⛔C语言“数组名”,不得不说的秘密!⛔】c语言“数组名字“初探
代码:#include<stdio.h>int main(){ int a[10] = {0}; printf("a: %p a + 1: %p\n",a,a + 1); printf("&a: %p &a + 1: %p\n",&a,&a + 1); printf("&a[0]:%p &a[0] + 1: %p\n",&a[0],&a[.原创 2020-11-11 18:52:50 · 16509 阅读 · 2 评论 -
【IP地址の乾坤大挪移】C语言实现“IP地址/数字”互转
vs2008可以运行。简单演示下ip地址与整数互转。注意ip顺序问题。保证一致即可。code:#include <stdio.h>//demo//ip 10.67.83.11// 172184331void main(){ ///* 待转化的整数IP */ unsigned int IP1_Addr,IP2_Addr;...原创 2019-10-25 16:43:48 · 11326 阅读 · 6 评论 -
ShellExecuteA function
erforms an operation on a specified file.SyntaxC++复制HINSTANCE ShellExecuteA( HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd...转载 2018-12-29 15:01:06 · 779 阅读 · 0 评论 -
CString::Format
CString::Format// 看代码,针对format带参数列表的情况没整明白,于是开始百度,搜索百度一大圈没找到好的解答,最后还是微软靠谱,与大家分享。voidFormat(LPCTSTRlpszFormat**, ...);**void Format( UINT nFormatID**, ... );**ParameterslpszFormatA format-c...转载 2018-12-29 14:45:43 · 536 阅读 · 0 评论