C语言
不 知
只做笔记记录,如语句不通顺不理解见谅,有帮助最好,没帮助也请口下积德。
by design.
展开
-
【C语言】fgets函数在windows和Linux下对CRLF结尾文本处理差异
fgets()调用之后,如果读取一行,会把 \r\n 当成 \r\n 读到buf中。:fgets()调用之后,如果读取一行,会把\r\n当成 \n 读到buf中。:fgets()调用之后,如果读取一行,会把 \n 当成 \n 读到buf中。一般文本文件在windows会以CRLF结尾,在Linux下会以LF结尾。:fgets()调用之后,如果读取一行,会把\n当成 \n 读到buf中。因此,如果代码在两平台有差异,如果有处理相关的内容,需要警惕。原创 2024-03-21 10:50:16 · 276 阅读 · 0 评论 -
[C语言]64位数据类型 long long
C语言64bit数据类型原创 2023-03-07 20:37:48 · 620 阅读 · 0 评论 -
C语言结构体中的位域操作
C语言中结构体定义如果某个变量不需要基础数据类型的字节数,则可以通过冒号的方式通过位域来定义需要的字节数。typedef struct{ uint8_t r : 8; uint8_t g : 8; uint8_t b : 8; uint8_t hdr : 1; uint8_t a : 2; uint8_t pad : 5;}HDRPIXEL;上面这个结构体的真实所占字节数为 4 。...原创 2021-10-12 15:32:39 · 530 阅读 · 0 评论 -
【C语言】sizeof(‘A’)等于多少
今天有人在群里面问sizeof(‘A’)等于什么?我嘞个晕,上去填个1。好吧,栽了…字符常量在内存中占用一个字节,存储时是按ASCI码存储的。C语言规定所有字符型常量按整形量来处理。32位和64位系统中在.cpp文件中该值为1在.c文件中红该值为4...原创 2021-09-10 15:06:52 · 66 阅读 · 0 评论 -
[C语言] windows下代码覆盖率测试工具-OpenCppCoverage介绍
代码覆盖率测试工具名称:OpenCppCoverage简介:OpenCppCoverage是2014年推出的Windows平台下开源的C++代码覆盖率工具,类似于Linux下gcc内嵌的gcov工具。它不需要在编译时插桩,只需要有编译生成的pdb文件,运行时插桩,通过该工具启动进程即可。官网:https://opencppcoverage.codeplex.com/Github源码路径:https://github.com/OpenCppCoverage/OpenCppCoverageVS插件下载原创 2021-08-27 15:16:27 · 6784 阅读 · 0 评论 -
记录再次理解大小端和文件写入的东西
在jpeg文件头首两个字节,如果我们需要将0xFFD8写入文件的话,如果直接调用C语言的fwrite函数是:unsigned short p = 0xFFD8;fwrite(&p, 1, byteSize, fp);此时在文件中看到的是:这里是大小端的概念,目前计算机以小端存储为主,在p在内存中的分布是:也就是低字节是低位,高字节是高位。&p为 0x00AFFA18fwrite会逐字节的写入,也就是它会先写入d8、再写入ff也就是上面的D8FF如果需要写入FFD8的原创 2021-07-30 16:14:04 · 633 阅读 · 1 评论 -
C语言的一些位操作
原创 2021-01-09 22:03:35 · 77 阅读 · 1 评论 -
int可以表示的最大整数为多少?
int是有符号整数,可以表示的最大整数为:二进制表示方法:0111 1111 1111 1111 1111 1111 1111 1111那么他的大小为多少呢?(2^31 -1)这个是怎么算的呢?其实就是正常的算法:1* 2 ^ 0 + 1* 2 ^ 1 +....+1 * 2 ^ 30那么这个其实是一个等比数列:公比为2,首项为1,尾项为2 ^ 30。代入公式可得:(1- 2 ^ 30 * 2)/-1 = 2 ^ 31 -1...原创 2021-01-03 15:02:42 · 6498 阅读 · 0 评论 -
C语言通过QR分解计算矩阵的特征值和特征向量
#include <stdio.h>#include <stdlib.h>#include <math.h>#include <time.h>//--------------------------这里是一些定义的结构体和数据类型---------//纯C里面定义的布尔类型typedef enum { False = 0, True = 1 }Bool;//定义矩阵元素的类型为matrixTypetypedef double matrixTy原创 2020-12-28 15:42:16 · 6140 阅读 · 7 评论 -
辨识
main函数#include "pareIdentify.h"int main(int *argc,char **argv){ double *resul1; double *resul2; paraIdenti_("D://rawdata.csv",&resul1,&resul2); for (int i = 0;i< 24;i++) { printf("resul1:%d\t%.10lf\n", i + 1, resul1[i]); } printf(原创 2020-11-22 13:02:02 · 108 阅读 · 0 评论 -
LInux下C语言使用epoll实现网络并发
#include<stdio.h>#include<unistd.h>#include<sys/socket.h>#include<stdlib.h>#include<arpa/inet.h>#include<ctype.h>#include <sys/epoll.h>#define SERV_PORT 10002int main(){ struct epoll_event tmp,ep[5];/原创 2020-11-22 11:25:17 · 454 阅读 · 0 评论 -
C语言分割字符串函数strtok和atof的使用
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char name[] = "123.4,456.78,4569.23"; char *p = strtok(name,","); while(p!=NULL){ printf("%lf\n",atof(p)); p = strtok(NULL,","); }原创 2020-11-22 11:22:07 · 171 阅读 · 0 评论 -
C与Python交互ctype方式记录
Python中封装了ctype可以用来C与Python之间的交互。创建C的动态库在VS中选择动态库编译可以将函数编译成动态库的形式。下面条件编译是用来在C++中编译C的函数,并且导出成动态库的。#ifdef __cplusplus#define XEXT extern "C"#else#define XEXT#endif#ifdef _WIN32 //包含win32和win64#define XLIB XEXT __declspec(dllexport)#else#define XL原创 2020-11-04 21:55:11 · 701 阅读 · 0 评论 -
旋转矩阵转四元数C语言版本
void mat2qua(float(*m)[3], float* qua){ float q1 = sqrt(m[0][0] + m[1][1] + m[2][2] + 1) / 2; float q2, q3, q4, tr, s; if (q1 != 0.0) { q2 = (m[2][1] - m[1][2]) / 4 / q1; q3 = (m[0][2] - m[2][0]) / 4 / q1; q4 = (m[1][0] - m[0][1]) / 4 / q1; } e原创 2020-11-04 18:42:06 · 605 阅读 · 1 评论 -
串口读取示例
#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <unistd.h>#include <assert.h>#include <termios.h>#include <sys/time.h>#include <time.h>#include <sys/types.h>#include <errno.h原创 2020-11-04 11:03:16 · 169 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);会自动检测终结符’\0’,memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。但是必须需要指定需要拷贝的长度。strcpy和memcpy主要有以下3方面的区别。1、复原创 2020-09-25 14:39:48 · 148 阅读 · 0 评论 -
C语言和C++函数字符串转数字和数字转字符串的函数
C语言sprintf(数字转字符串)char name[10];sprintf(name, "%d", 100);atoi和atof(分别转换为int和double)cout << atoi("100") << endl;cout << atof("100.03") << endl;C++使用stringstream即可需要头文件 #include <sstream>下面这个例子是将字符串转为int类型的, string原创 2020-09-10 16:08:57 · 358 阅读 · 0 评论 -
scanf的高级用法
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <assert.h>char* MyStrcat(char* src, char* des){ assert(des != NULL && src != NULL); assert(src != des); char* p = src; while (*p++); p--; while (*p++ = *des++); retu原创 2020-09-10 15:22:33 · 276 阅读 · 2 评论 -
c++接受键盘输入处理
https://blog.csdn.net/liuuze5/article/details/51098471转载 2020-09-10 14:03:49 · 983 阅读 · 0 评论 -
strcat源码分析
strcpy、strcat、memmove、memcpy等标准库函数的源码是非常常见C/C++笔试题,在会用的基础上一定要会其实现。本人是半路出家学C语言,在面试某还算大型公司时就吃了大亏。在这里分享strcat源码,并附上个人见解。#include <stdio.h>#include <assert.h>char *strcat(char *dest, const char *src){ //断言dest和src不为空,这一句就可以看出代码的严谨性 a.转载 2020-09-10 13:58:56 · 771 阅读 · 0 评论 -
strcpy的实现源码
//实现1char * strcpy(char* _Dest, const char* _Source){ //检查传入参数的有效性 assert(NULL != _Dest); assert(NULL != _Source); if (NULL ==_Dest || NULL == _Source) return NULL; char* ret = _Dest; while((*_Dest++ = *_Source++) != '\0'转载 2020-09-10 13:39:58 · 781 阅读 · 0 评论 -
C语言实现16进制转为10进制
#include <stdio.h>#include <string.h>#include <math.h>void conver(char arr[]){ int i, j = 0, k = 0, sum = 0, n = strlen(arr); int num[100]; for (i = 0; i < n; i++) { switch (arr[i]) { case 'A':num[j++] = 10; break; c原创 2020-09-10 13:30:02 · 6136 阅读 · 4 评论 -
C++三元运算符特点记录
一般情况下,三木运算符需要两个表达式类型一致,但是如果出现不一致的地方也可以进行转换,转换是有一定的规则的。下面我们来简单分析一下:代码一:cout << (1 > 2 ? 1 : "1") << endl;代码二:cout << (1 > 2 ? 0 : "1") << endl;代码三:cout << (1 > 2 ? "hello" : "hi") << endl; 结果是.原创 2020-09-10 11:30:30 · 246 阅读 · 0 评论 -
memcpy和memmove的区别
memmove在copy两个有重叠区域的内存时可以保证copy的正确,但是memcpy就不可以保证有重叠区域的拷贝是正确的。memcpy的源码void *memcpy(void *dest, const void *src, size_t count){assert(dest != NULL || src != NULL);char *tmp = (char *)dest;char *p = (char *)src;while (count--){*tmp++ = *p++;}.原创 2020-09-02 20:03:52 · 86 阅读 · 0 评论 -
C++模板技术探究仿函数、适配器、模板特化
C++中算法无非是传入(1)迭代器(2)仿函数(适配器)仿函数仿函数主要时进行算法调用自定函数的用途。我们来实现仿函数的时候,尽可能包含下面这三个类型定义:因为他是和适配器之间结合的桥梁,当函数对象与适配器接口的时候,适配器需要询问这三个问题,如果不存在这三个类型定义,那么该仿函数会变得很不灵活,不能与适配器进行结合使用。typedef _Ty first_argument_type;typedef _Ty second_argument_type;typedef bool result_原创 2020-08-26 16:58:10 · 339 阅读 · 0 评论 -
C++如何将16进制赋值为浮点数
一般情况下,我们在C++中将16进制形式赋值给整数类型,我们可以通过如下的操作:unsigned int aaa = 0x00000020;但是如果直接将该16进制数赋值给浮点数,等同于如下操作float bbb = 0x00000020;float ccc = float(int(0x00000020));可以看出来,编译器并不会以内存的形式来转换成float,而是先转换成 int 类型的,然后将此 数 强转为 float。正确操作应该是如下:unsigned int aaa = 0x0原创 2020-08-16 17:19:12 · 2927 阅读 · 0 评论 -
计算机中CRLF、CR、LF详解
很长一段时间里,对于CRLF、CR、LF的理解仅限于不同操作系统下对换行符的定义。所谓知其然需知其所以然,从学习中找到乐趣,对知识的记忆才会更加深刻。名词解释CR:Carriage Return,对应ASCII中转义字符\r,表示回车LF:LineFeed,对应ASCII中转义字符\n,表示换行CRLF:Carriage Return & Linefeed,\r\n,表示回车并换行Windows操作系统采用两个字符来进行换行,即CRLF;Unix/Linux/Mac OS X操.转载 2020-08-05 09:33:02 · 4966 阅读 · 0 评论 -
opencv中mat类的初始化操作
https://blog.csdn.net/liulimengtianxia/article/details/89323529转载 2020-08-02 16:56:52 · 338 阅读 · 0 评论 -
C语言中字符串处理函数细节
https://www.cnblogs.com/xionghj/p/4443891.html转载 2020-08-02 16:16:11 · 82 阅读 · 0 评论 -
C语言中的\不能滥用
C语言中的 ‘’ 表示转义字符 或者 解下一行。在调PMAC中 无意在注释中写了一个 \ 但是IDE不报错。找了三个小时才找到错。在此记录一下以纪念我那逝去的三个小时时间,对不起了。原创 2020-07-31 15:41:05 · 132 阅读 · 0 评论 -
网络IP地址将数字转换为字符串形式
in_addr_t 一般为32位的unsigned int.#define IPV4(a,b,c,d) ((a<<0)|(b<<8)|(c<<16)|(d<<24))unsigned int value=IPV4(127,0,0,1); //这里是已逗号分开。in_addr_t ip;memcpy(&ip,&value,sizeof(value));//最终显示127.0.0.1printf(“the ip value is转载 2020-07-27 20:15:43 · 1389 阅读 · 0 评论