C
文章平均质量分 71
KgdYsg
这个作者很懒,什么都没留下…
展开
-
strcpy or strncpy or memcpy
strcpy or strncpy or memcpystrcpy头文件函数原型函数说明返回值坑点示例strncpy头文件函数原型函数说明返回值memcpy头文件函数原型函数说明返回值注意事项参考strcpy头文件#include <string.h>函数原型char *strcpy(char *dest, const char *src);函数说明strcpy() 会将参数 src 字符串拷贝至参数 dest 所指的地址。但是如果 dest 所指向的空间不够大,可能会造成缓原创 2021-12-14 16:45:22 · 787 阅读 · 0 评论 -
跨文件的 expected initializer before ‘xxx‘
expected initializer before 'xxx'问题描述问题原因坑点问题描述编译过程中出现报错,提示"expected initializer before ‘xxx’"问题原因一般此问题是由于报错该行的代码上条语句没有正确结束(比如缺了分号之类的)坑点如果有一个头文件 a.h 包含了 b.h,然后在 b.h 的最后一个声明中缺乏分号,报错会提示在 a.h 的第一个声明中。例如头文件 a 如下:#ifnedf A_H#define A_h#include b.h//原创 2021-12-13 20:29:39 · 4860 阅读 · 0 评论 -
C语言printf——动态指定输出格式长度
C语言printf——动态指定输出格式长度gcc 版本代码输出gcc 版本gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)代码#include <stdio.h>int main(){ float pai = 3.1415926; printf("pai = %*.*f\n", 2, 2, pai); printf("pai = %*.*f\n", 2, 3, pai); printf("pai原创 2020-08-05 02:37:56 · 1839 阅读 · 0 评论 -
64位主机字节序与网络字节序之间的转换
64位主机字节序与网络字节序之间的转换C字节序转换64位主机字节序与网络字节序转换C字节序转换常用的函数有函数功能ntohs将一个无符号短整形数从网络字节顺序转换为主机字节顺序。htons将无符号短整型主机字节序转换为网络字节序ntohl将一个无符号长整形数从网络字节顺序转换为主机字节顺序。htonl将无符号长整型网络字节序转换为主机字节序以上函数对应的是 16 位、 32 位长的数据。64位主机字节序与网络字节序转换这个需求没有标准的函数实现,原创 2020-06-21 11:45:29 · 2351 阅读 · 0 评论 -
c 语言 中 char int 转换问题
1 char 型数字转换为int型char a[] = “32”;printf("%d\n", a[0]-‘0’);//输出结果为32 int转化为char***************************** linux c ******************************(1)字符串转换成数字,用 atoi,atol,atof,分别对应的是整型,long 型,doub...转载 2020-02-17 14:53:51 · 346 阅读 · 0 评论 -
警告: 隐式声明与内建函数 ‘printf’ 不兼容 解决方法
加个#include <stdio.h>即可原创 2019-11-20 20:44:55 · 2045 阅读 · 2 评论 -
C 语言指针数组和数组指针
一、指针数组和数组指针的内存布局初学者总是分不出指针数组与数组指针的区别。其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。下面到底哪个是数组指针,哪个是指针数组呢:A)...原创 2019-11-05 01:14:23 · 286 阅读 · 0 评论 -
assert()函数用法总结
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。...转载 2019-04-12 16:56:28 · 140 阅读 · 0 评论 -
ftok()函数深度解析
关于ftok函数,先不去了解它的作用来先说说为什么要用它,共享内存,消息队列,信号量它们三个都是找一个中间介质,来进行通信的,这种介质多的是。就是怎么区分出来,就像唯一一个身份证来区分人一样。你随便来一个就行,就是因为这。只要唯一就行,就想起来了文件的设备编号和节点,它是唯一的,但是直接用它来作识别好像不太好,不过可以用它来产生一个号。ftok()就出场了。ftok函数具体形式如下:*key_t...转载 2019-04-15 19:30:24 · 1521 阅读 · 2 评论 -
c中in6_addr地址
in6_addr的结构体:typedef unsigned char uint8_t; typedef unsigned short int uint16_t; #ifndef __uint32_t_defined typedef unsigned int uint32_t; # define __uint32_t_define...转载 2019-04-08 19:32:23 · 5262 阅读 · 0 评论 -
c语言中 %p的含义
格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。示例:int i = 1;printf("%p",&i);相当于int i = 1;printf(“0x%x”,&i);对于32...转载 2019-04-11 10:07:44 · 1742 阅读 · 0 评论 -
multiple definition of `xxxx`问题解决及其原理
编译代码的时候发现了:multiple definition of xxxxx错误。在网上搜了下,找到一篇博客讲这个问题讲得比较好的。转载记录一下。第一反应,是头文件没有加条件编译,检查头文件,发现所有头文件都加了条件编译。#ifndef TEST_H#define TEST_H// 代码内容#endif要解决这个问题先来看看变量的定义和声明的区别。声明是向编译器介绍名字--标识符,...转载 2019-03-23 22:09:19 · 9169 阅读 · 3 评论 -
C/C++ static 的用法
C/C++ 用关键字 static 修饰表示变量、函数是静态的。静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该...转载 2019-03-25 21:10:05 · 622 阅读 · 0 评论 -
Linux服务器编程之:link()函数,ln命令,symlink,readlink,案例说明
1 link()依赖头文件#include<unistd.h>2函数定义int link(const char *oldpath,const char *newpath);函数说明:link() creates a new link (also known as a hard link) to an existing file.翻译:link()函数为...转载 2019-02-20 21:34:40 · 662 阅读 · 0 评论 -
C/C++获取当前系统时间
方案— 优点:仅使用C标准库;缺点:只能精确到秒级#include &lt;time.h&gt; #include &lt;stdio.h&gt; int main( void ) { time_t t = time(0); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z"...转载 2019-02-19 20:50:26 · 2125 阅读 · 0 评论 -
c语言long和long long的取值范围
溢出和取值范围C语言的整型溢出问题整数溢出int、long int 、long long int 占用字节《C和指针》中写过:long与int:标准只规定long不小于int的长度,int不小于short的长度。double与int类型的存储机制不同,long int的8个字节全部都是数据位,而double是以尾数,底数,指数的形式表示的,类似科学计数法,因此double比int能表...转载 2019-04-09 17:31:03 · 13431 阅读 · 0 评论 -
C语文命令行中参数argc argv[]
main(int argc,char *argv[ ])argc为整数:表示参数的个数argv为数组指针:存放的是参数内容下面给出一个例子来理解这两个参数的用法:假设程序的名称为prog当只输入prog,则由操作系统传来的参数为:argc=1,表示只有一程序名称。argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog当输入prog para_1,有一个参数,则由...转载 2019-04-18 00:26:54 · 224 阅读 · 0 评论 -
Linux C/C++ include“”环境变量
C_INCLUDE_PATH CPLUS_INCLUDE_PATH但其实用makefile更合适 这两个环境变量加了路径,编译的时候不一定能找到头文件原创 2017-12-04 08:56:04 · 2718 阅读 · 0 评论 -
"undefined reference to" 问题解决方法
最近在 Linux 下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func’关于undefined reference 这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(.o)测试代...转载 2019-05-30 21:01:00 · 93224 阅读 · 6 评论 -
pcap文件格式及写pcap文件
一、pcap文件格式(该部分引用网络资料) pcap文件格式及文件解析第一部分:PCAP包文件格式(一)、基本格式:文件头 数据包头 数据报 数据包头 数据报…(二)、文件头:文件头结构体,libpcap源码中定义如下 struct pcap_file_header { bpf_u_int32 magic; u_short version_majo...转载 2019-05-13 10:10:09 · 3260 阅读 · 0 评论 -
socket编程必备函数:字节序转换C++模板函数,一劳永逸地代替ntoh或hton等函数
socket 编程必备函数:贡献一个使用 C++ 模板写的字节序转换函数,一劳永逸地代替ntoh 或 hton 等函数,而且还不用管整形的长度,想怎么用就怎么用,不会用错。这么好的东西是不是可以考虑将这个函数纳入 C++ 标准库啊? //判断是否大端字节序 bool IsBigEndianOrder() { int iVal = 1; char *pChar...转载 2019-05-16 11:02:51 · 350 阅读 · 0 评论 -
Segmentation Fault错误原因总结
一、 什么是“Segmentation fault in Linux”所谓的段错误就是指访问的内存超过了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的代码段以及...转载 2019-05-14 11:19:16 · 19736 阅读 · 0 评论 -
C/C++中extern关键字详解
一.extern修饰变量和函数在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。extern声明不是定义,即不分配存储空间。先来看一段代码/* basic_stdy.h */#ifndef_BASIC_STDY_H_#define_BASIC_STDY_H_//extern int a; ...转载 2019-04-19 19:18:59 · 775 阅读 · 0 评论 -
C语言中的Sleep函数的解读
Sleep函数:功 能: 执行挂起一段时间用 法: unsigned sleep(unsigned seconds);注意:在VC中使用带上头文件#include <windows.h>,在Linux下,gcc编译器中,使用的头文件因gcc版本的不同而不同#include <unistd.h>在VC中,Sleep中的第一个英文字符为大写的"S" ,在linux下不...转载 2019-04-18 00:31:36 · 3530 阅读 · 3 评论 -
feof()原理和用法
一、feof()是什么?feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0一般在文件操作,中经常使用feof()判断文件是否结束。二、feof()的经典错误根据这个函数的定义,一般大家都是这样使用的,但是这样使用,文件中无论是否有内容,都会被判断为“文件不为空”。#include<stdio.h>int main(void){ ...转载 2019-02-19 20:21:21 · 325 阅读 · 0 评论 -
Linux 下获取当前程序运行的绝对路径
int get_module_path(string module_path){ char processdir[128] = {0}; char *pPath_end = NULL; if( readlink( "/proc/self/exe", processdir, sizeof(processdir)) &gt; 0) { path_end = strrchr( proc...原创 2019-02-18 21:42:45 · 1245 阅读 · 0 评论 -
c实现毫秒、微秒级定时器
秒级定时器,都知道可以用sleep实现,但如果要实现毫秒级呢?usleep?使用select实现select函数原型:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);参数说明: slect的第一个参数nfds为fdset集合中最大描述...原创 2018-04-20 00:34:22 · 4065 阅读 · 0 评论 -
指针函数与函数指针的区别
没怎么用过函数指针,而指针函数更是没有听过这个概念(但是看完后,发现这不就是返回类型为指针类型的函数嘛- -)指针函数是指带指针的函数,即本质是一个函数,函数返回类型是某一类型的指针。函数指针是指向函数的指针变量,即本质是一个指针变量。参考: 指针函数与函数指针的区别...原创 2018-04-11 20:14:57 · 177 阅读 · 0 评论 -
linux c信号处理
常见的几种信号 SIGABRT 程序的异常终止,如调用 abort。SIGFPE 错误的算术运算,比如除以零或导致溢出的操作。SIGILL 检测非法指令。SIGINT 接收到交互注意信号。SIGSEGV 非法访问内存。SIGTERM 发送到程序的终止请求。signal() 函数:void (*signal (int sig, v...转载 2018-04-03 09:17:46 · 162 阅读 · 0 评论 -
升级某程序踩的坑
上上周升级了一个程序(加一个功能给指定后台发一个时间戳),现场跑起来没有问题。然后上周清明放假前,后台告诉我,传输的部分时间戳出了问题,时间戳不对。(此时间戳用于对齐语音)。然而一直没有现场的日志,无法处理,分析可能是有网元升级导致的,也可能是程序的问题。然后昨天排查了一下日志,最后发现一共六台机器上,其中有一台机器上,程序没有升到最新版本,所以导致通过此机器的数据没有发送时间戳,而后...原创 2018-04-09 11:44:10 · 155 阅读 · 0 评论 -
函数传递参数的方法
昨天部门秘书给面试的人评笔试的卷子,对着标准答案问我:你看这个人写得对不。秘书是学民族乐的。。问题大概是,一个函数要使用函数外的变量大概有哪几种方法?(忘了)答案是四种:全局变量,按值传递,地址传递,引用传递。不过那哥们写的答案我能理解出他想表达的意思是这四种,但又好像和正确答案不一致。。 参考: 函数传递参数的三种方式,以及它们的区别 函数参数三种传递方式的区别...原创 2018-04-08 15:14:10 · 291 阅读 · 0 评论 -
C/C++完成两个日期之间相隔天数的计算
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2016-08-27 17:53:14 · 3515 阅读 · 0 评论 -
多益网络的四个笔试题(数学)
题目1:有1-60 60个数字,然后对应把它们随机分成6组,每组10个数。问数字1和数字2分到同组的概率? 我觉得答案是 9/59 同学不信,所以回来又仔细思考了一下,因为笔试的时候是很随意地想的。笔试时候的想法,数字1先选一个组,剩下59个坑,只有9个是和1同组的,所以2和1同组的概率是9/59。同学告诉我,这是分6个组,数字1随意选一个组,数字2随意选一个组,所以相同的概率是1/6*1/6=1原创 2017-03-16 23:28:19 · 17268 阅读 · 6 评论 -
恒大互联网金融笔试编程题——数组排序
数组{2,20,24,8,89}保持原子性,组成最大的数是 89824220 给一个数组,求能组成的最大数#include <iostream>using namespace std;int main(){ int getFirstNum(int n); bool compare(int n, int m); int a[7] = {2, 5, 24, 20, 8原创 2016-10-27 23:32:02 · 972 阅读 · 0 评论 -
占坑
//占坑 http://blog.csdn.net/u011609652/article/details/17012263转载 2016-08-29 10:28:58 · 652 阅读 · 0 评论 -
守望者的逃离
http://blog.csdn.net/lxzh12345/article/details/22750955?utm_source=tuicool&utm_medium=referral转载 2016-09-08 16:47:05 · 445 阅读 · 0 评论 -
||和&&到底先算哪个
程序如下#include <stdio.h>int main(){ int a = 1; int b = 0; int c = 0; if(a || b && c) { printf("真\n"); } else { printf("false\n"); }...原创 2018-05-24 19:49:29 · 1264 阅读 · 2 评论 -
C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef
有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码。 (一)条件编译方法 条件编译是通过预编译指令来实现的,主要方法有: ...转载 2018-07-28 15:47:15 · 434 阅读 · 0 评论 -
A warning:comparison between signed and unsigned integer expressions [-Wsign-compare]
comparison between signed and unsigned integer expressions:有符号和无符号整数表达式之间的比较(谷歌翻译)这个警告目的是防止一个负的符号型的数据转化为无符号型时,会产生一个不是我们想要的很大的数据。未完待续A warning - comparison between signed and unsigned integer exp...原创 2018-08-02 19:33:08 · 6476 阅读 · 0 评论 -
memset用法详解
void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。例子#include int main(){ char *s="Golden Global View"; clrscr(); memset(s,'G',6); printf("%s",s); getch...转载 2018-11-05 20:19:08 · 420 阅读 · 0 评论