
C语言
文章平均质量分 60
行者三个石
科技才是强国之本
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
memcpy和strcpy区别,以及源代码学习
因为自己主要用到得是C语言,所以这里只学习C语言的,C++应该是一样的。常见用法和区别头文件#include<string.h>声明char *strcpy(char* dest,const char* src);void *memcpy(void*dest, const void *src, size_t n);两者区别strcpy只能拷贝字符串。s...原创 2020-01-07 00:46:47 · 1841 阅读 · 0 评论 -
Linux实现的进度条一(基本知识学习和简单功能)
Linux下经常下载或者升级的时候会有一个进度条,今天学习了下,整理了个笔记,一来为了加深记忆巩固知识,二来方便日后查阅。当然也希望和大家共同学习,一起进步。废话不多说,上效果图:代码:#include <stdio.h>#include <string.h>#include <unistd.h>#define PROGRESS_BAR...原创 2019-11-18 21:59:24 · 304 阅读 · 0 评论 -
C语言移位操作之增删对应比特位
在实际开发中,常常用移位操作代替乘除法,因为一般情况下:1.从效率上看,使用移位指令有更高的效率,因为移位指令占2个机器周期,而乘除法指令占4个机器周期。2.从硬件上看,移位对硬件更容易实现,所以会用移位,移一位就乘2,这种乘法当然考虑移位了。详细文章可以参考这个博客:https://blog.youkuaiyun.com/louxuez/article/details/24434207...原创 2019-11-10 22:50:33 · 1262 阅读 · 0 评论 -
stdarg.h可变参数列表(非格式控制)
1.C语言也存在可变参数的概念最常见的就是scanf和printf函数:int scanf(const char * restrict format,...);int printf(const char *fmt, ...);你可以输入任意类型的任意个参数,但是必须在格式化字符串中确定输入参数的个数和类型。那么我们如何自定义可变参数函数呢?就需要使用stdarg.h头文件了。std...原创 2018-12-01 22:12:29 · 597 阅读 · 0 评论 -
内存分配方式详解(堆、栈、自由存储区、全局/静态存储区和常量存储区)
原文地址:https://blog.youkuaiyun.com/u013007900/article/details/79338653参考文章:http://www.cnblogs.com/hanyonglu/archive/2011/04/12/2014212.html一、数据结构中的栈和堆虽说我们经常把堆栈放在一起称呼,但是不可否认的是,堆栈实际上是两种数据结构:堆和栈。堆和栈都是一种数据项按序...转载 2018-12-01 00:36:30 · 11778 阅读 · 2 评论 -
C语言指针作为函数参数传递学习(一)
1. 数组或者一维指针做函数形参1.1传入的指针为NULL比如下面的例子,很多人都会理解错:#include &lt;stdio.h&gt;void test(char *string){ string = "hello world";}int main(){ char *str = NULL; test(str); printf("str=%s\n",str); ...原创 2018-12-01 00:18:34 · 44869 阅读 · 19 评论 -
C语言字符串处理基础函数(一)
1.strlen()函数功能:函数返回字符串str 的长度( 即空值结束符之前字符数目,不包括控制结束符)。语法: #include <string.h> size_t strlen( char *str );例子:#include <stdio.h>#include <string.h>int main(){ char *...原创 2018-12-04 23:07:22 · 330 阅读 · 0 评论 -
关于Linux编译时的路径一些说明
关于Linux编译时的路径一些说明如果源文件(.c)和头文件(.h)在同一个目录那么就直接包含使用头文件时,就直接包含就行了,不需要路径的说明举例:比如现在有main.c,test.c,test.h三个文件,且都在同一个目录/home/user/code下test.h声明了test.c中的函数main.c需要使用test.c中的函数/*main.c文件*/#i...原创 2018-04-15 13:35:37 · 1358 阅读 · 0 评论 -
C语言时间函数(4)之Linux下设置时间的函数stime()和settimeofday()
标准C库中只有获取系统时间的API,好像还没有设置系统时间的API,本文将谈谈如何在linux平台设置系统时间,最后给出一个与平台无关的设置系统时间的封闭函数。linux是如何管理时间的?在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔11分钟会将系统时间写入CMOS,同步时间原创 2018-01-08 22:41:40 · 42912 阅读 · 4 评论 -
C语言extern的用法
转载请注明出处http://blog.youkuaiyun.com/xingjiarong/article/details/47656339利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数,下面就结合具体的实例,分类说明一下。 一、引用同一个文件中的变量#includeint func();int main(){ func(); //1 prin转载 2018-01-23 21:48:14 · 737 阅读 · 0 评论 -
C语言时间函数(3)之Windows下设置时间SetLocalTime和SetSystemTime
1.设置当前时区的时间头文件:#include 函数声明:BOOL SetLocalTime(const SYSTEMTIME* lpSystemTime);返回值:成功返回true,失败返回flase这里介绍下SYSTEMTIME这个结构体typedef struct _SYSTEMTIME { // st WORD wYear; WORD wMo原创 2018-01-05 22:33:41 · 13934 阅读 · 3 评论 -
C语言时间函数(5)之clock_gettime()
1、clock_gettime(获取指定时钟的时间值)#include int clock_gettime( clockid_t clock_id,struct timespec * tp );说明:clock_id指定要获取时间的时钟,根据Posix的指定可以是以下值:CLOCK_REALTIME 0Systemwide realtime cl原创 2018-01-11 22:28:48 · 14489 阅读 · 0 评论 -
C语言时间函数(2)之time,ctime,gmtime,localtime,asctime,mktime
一、时间相关说明格林威治时间表示0时区的标准时间。其他时区的时间和此标准时间均有时间差。UTC(Universal Time Coordinated)是世界协调时间,是格林威治时间在互联网中的表示方法二、标准C语言时间函数1、time(取得本地目前的时间秒数)#includetime_t time(time_t *t);函数说明 此函数会返回从公元原创 2017-12-26 22:11:42 · 7869 阅读 · 0 评论 -
C语言可变长参数函数与默认参数提升
学习本章内容的时候,首先需要知道可变参数提升相关的知识。原文地址:https://blog.youkuaiyun.com/astrotycoon/article/details/82845011、概述C标准中有一个默认参数提升(default argument promotions)规则。默认参数提升有时会给我们带来疑惑。本文结合C语言的可变长参数函数来说明默认参数提升存在的陷阱。2、默认参数提升的...转载 2018-12-01 22:26:50 · 952 阅读 · 0 评论 -
C语言字符和字符串处理函数(二)strchr,strpbrk,strstr
查找字符或者字符串查找一个字符:和和和strchr()。函数返回一个指向STR中CH首次出现的位置,当没有在STR中找CH就报道查看NULL。查找任意字符:strpbrk() 函数返回一个指针,它指向字符串STR2中任意字符在字符串STR1首次出现的位置,如果不存在返回NULL。查找一个子串:的的的strstr() 函数返回一个指针,它指向字符串str2中的中首次出现于字...原创 2018-12-08 14:34:00 · 675 阅读 · 0 评论 -
TCP的三次握手与四次挥手
TCP报文格式序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接...转载 2019-05-09 19:16:28 · 334 阅读 · 0 评论 -
C语言字体颜色
c语言下如何输出彩色的字使用格式:样式开始+被修饰字符串+样式结束样式开始:\033[参数1;参数2;参数3 其中参数1,参数2,参数3为可选组合被修饰字符串:需要输出的内容样式结束:\033[参数11.样式开始:\033[参数1;参数2;参数3参数1:代表背景色可选值和含义:字背景颜色范围:40 - 4940:黑41:深红42:绿43:黄色4...原创 2019-04-06 11:52:07 · 18507 阅读 · 13 评论 -
几种常见排序算法原理&C语言实现
原文地址:https://www.cnblogs.com/gonsedup/p/6674822.html一、冒泡排序(以下各法均以从小到大排序为例,定义len为数组array的长度)原理:比较相邻元素的大小,对于每次循环,按排序的规则把最值移向数组的一端,同时循环次数依次减少。 C代码实现写法一: void bubble_sort(int arr[],int len)//从数组...转载 2019-01-01 20:47:08 · 542 阅读 · 0 评论 -
单个字符获取getchar(),getc(),getch(),getche(),fgetc()函数
getchargetchar由宏实现:#define getchar() getc(stdin)。#include <stdio.h>int getchar( void );#include <stdio.h>int getc( FILE *stream );getchar有一个int型的返回值。当程序调用getchar时.程序就等着用户按键。用户...原创 2019-01-01 16:50:43 · 2661 阅读 · 0 评论 -
C语言中结构体用等号“=”直接赋值的讨论
原文地址:https://blog.youkuaiyun.com/hazir/article/details/9429017今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题。那么就总结一下C语言中结构体赋值的问题吧:结构体直接赋值的实现下面是一个实例:#include...转载 2018-12-25 20:11:24 · 23381 阅读 · 0 评论 -
C语言中的二级指针 -- 链表操作
https://blog.youkuaiyun.com/jasonchen_gbd/article/details/45276629总结:其实链表使用二级指针的好处就是,不管是头插尾插等操作后,链表的根节点地址不需要改变。如果链表是全局变量,那么就不用操作链表后返回该链表的根节点地址。直接访问全局的根节点地址就可以访问整个链表。一个链表中所有元素通过指针串联起来,链表的插入、删除等操作都是对指针的操作...转载 2018-12-26 20:52:19 · 1389 阅读 · 0 评论 -
C语言单链表的实现(增删改查)
链表的基础可以参考:https://blog.youkuaiyun.com/morixinguan/article/details/68951912或者参考:https://blog.youkuaiyun.com/Hackbuteer1/article/details/6591486 说明:这篇文章是自己理解然后熟悉时的学习笔记,主要记录实现过程中的代码笔记,以备日后快速查询,仅供参考:#incl...原创 2018-12-13 22:30:48 · 11264 阅读 · 1 评论 -
自己实现的printf函数
根据上一篇中的 《可变参数列表(非格式化控制)》,今天继续学习:自己写一个函数实现printf功能。1.自己实现的printf函数#include <stdio.h>#include <stdarg.h>void my_printf(const char *str,...){ va_list var; char c = 0; unsigned ...原创 2018-12-03 20:54:25 · 2894 阅读 · 5 评论 -
C语言字符串高级处理(三)strspn,strcspn,strtok
高级字符串查找strspn():函数返回字符串STR1中第一个不包含于字符串STR2的字符的索引或者理解为STR1包含STR2任一字符的字符长度。strcspn():函数返回STR1开头连续Ñ个字符都不含字符串STR2内字符的字符数或者理解为STR1不包含STR2任一字符的字符长度。的的strtok():函数返回字符串STR1中紧接“标记”的部分的指针,字符串STR2是作为标记的分隔符...原创 2018-12-08 15:19:36 · 765 阅读 · 0 评论 -
C语言的时间函数(1)gettimeofday,timeval,timezone
gettimeofday是函数,其头文件和声明如下#include int gettimeofday(structtimeval*tv, struct timezone *tz);其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果,timezone 参数若不使用则传入NULL即可。 下面是timeval和timezone的结构体说明:原创 2017-12-25 20:21:05 · 14037 阅读 · 4 评论 -
C语言assert宏的使用
#include #include #ifdef __cplusplusextern "C"{#endifint main(void){ int a = 5; printf("a=%d\n",a); a=-1; assert(a>0); printf("a=%d\n",a); return 0;}#ifdef __cplusplus}原创 2017-12-14 22:14:06 · 1361 阅读 · 0 评论 -
extern "C"的理解
在编程的时候经常会遇到这样的代码,查了相关的资料,说下自己的理解,也做个笔记,方便日后自己查看#ifdef __cplusplusextern "C"{#endif// 代码#ifdef __cplusplus}#endif主要作用:为了在C++代码中调用用C写成的库文件,就需要用extern"C"来告诉编译器:这是一个用C写成的库文件,请用原创 2017-11-25 12:01:52 · 220 阅读 · 0 评论 -
字符与字符串处理之getchar,gets,putchar,puts函数
int file_option(){ if(NULL == (fp = fopen("X:\\FileTest\\filetext","w+"))) { printf("创建文件失败!\n"); } else { printf("创建文件成功!\n"); } fputs("aaabbbcc原创 2017-10-21 20:08:58 · 514 阅读 · 0 评论 -
feof多读一次数据的问题
在读完文件的最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()或者fread执行读操作,feof()才能探测到文件结尾。这样就多执行了一次。对于feof()这个函数, 它是先读再判断是否到文件尾, 也就是说在它之前一定要读一次才能做出判断。开始我的代码是这样的typedef struct{ cha原创 2017-10-22 10:34:47 · 6654 阅读 · 2 评论 -
c语言以数据块的形式对文件数据进行操作
fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取。如果希望读取多行内容,需要使用 fread 函数;相应地写入函数为 fwrite。fread() 函数用来从指定文件中读取块数据。所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制。fread() 的原型为:size_t fread (转载 2017-10-21 21:33:29 · 3784 阅读 · 0 评论 -
c文件操作之位置指针设置函数fseek
fseek原型:int fseek(FILE *stream, long offset, int fromwhere);功能:重定位流(数据流/文件)上的文件内部位置指针注意:不是定位文件指针(文件指针是 FILE * fp 这样的),文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。 函数设置文件指针st原创 2017-10-21 20:38:59 · 6764 阅读 · 0 评论 -
c文件操作之fgets,fputs
fgetc() 和 fputc() 函数每次只能读写一个字符,速度较慢;实际开发中往往是每次读写一个字符串或者一个数据块,这样能明显提高效率。读字符串函数fgetsfgets() 函数用来从指定的文件中读取一个字符串,并保存到字符数组中,它的原型为:char *fgets ( char *str, int n, FILE *fp );str 为字符数组,n 为要读取的字符数目,fp转载 2017-10-21 20:32:46 · 774 阅读 · 0 评论 -
c语言实现文件夹的创建和删除
参考:http://blog.youkuaiyun.com/tigerjibo/article/details/11712039http://baike.baidu.com/subview/355/5900599.htmhttp://blog.sina.com.cn/s/blog_5db869d00100h7hi.htmlhttp://baike.baidu.com/v转载 2017-10-19 23:41:00 · 25703 阅读 · 3 评论 -
数据类型及混合运算与类型转换
原文地址:http://www.cnblogs.com/corvoh/p/5141746.html「C语言」数据类型及混合运算与类型转换 深入学习C语言时,有必要先了解一下数据类型的概念,以及它们之间的混合运算与类型转换。 本篇文章便是根据《C语言程序设计教程》和在线翻阅资料后整理而出。(练习题将逐步更新) 目录: 一、概述转载 2017-10-10 22:21:26 · 2108 阅读 · 0 评论 -
C语言中的正负数以及数值溢出
在阅读文章之前,最好有一定的原码,反码和补码之间的知识,最好能够知道他们之间的转换关系。在数学中,数字有正负之分。在C语言中也是一样,char,short、int、long 都可以带上符号,例如: 复制纯文本复制short a = -10; //负数int b = +10; //正数long c = (-9) + (+12); //负数和正数相加short a原创 2017-10-18 20:54:22 · 2428 阅读 · 0 评论 -
Linux中sysinfo的用法
sysinfo结构体Linux中,可以用sysinfo来获取系统相关信息。Linux中,sysinfo是用来获取系统相关信息的结构体。函数声明和原型:#include int sysinfo(struct sysinfo *info);在Linux中不同对版本结构体不一样在Linux 2.3.16中,结构体的信息是(单位是字节):struct sys原创 2017-10-09 22:31:09 · 28239 阅读 · 0 评论 -
C语言的文件操作之以字符形式读写文件
在C语言中,文件操作都是由库函数来完成的,这节介绍文件的打开和关闭。文件的打开(fopen函数)fopen() 函数用来打开一个文件,它的原型为:FILE *fopen(char *filename, char *mode);filename为文件名(包括文件路径),mode为打开方式,它们都是字符串。fopen() 会获取文件信息,包括文件名、文件状态、当前读写位置等,并...原创 2017-07-04 23:03:28 · 2883 阅读 · 1 评论 -
关于文件路径的反斜杠正斜杠和双斜杠问题
原文地址:http://blog.youkuaiyun.com/kobesdu/article/details/88111261 C文件路径为什么要用双斜杠因为 \ 在 C/C++/C# 中是转义前导字符,例如 \n 代表换行。如果路径中刚好有类似转义字符开头的,那么就会引起问题,所以路径中的 \ 必须用 \\ 的形式。 2 Windows的路径中表示文件层级为什么会用反斜杠「\」,而转载 2017-07-04 23:11:10 · 2078 阅读 · 0 评论 -
文件位置指针操作fewind和ftell
fewind()函数名: rewind()功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。rewind函数作用等同于 (void)fseek(stream, 0L, SEEK_SET);[1]原创 2017-10-22 10:49:34 · 1032 阅读 · 0 评论 -
c语言库函数strtoul
描述C 库函数unsigned long int strtoul(const char *str, char **endptr, int base)把参数 str 所指向的字符串根据给定的 base 转换为一个无符号长整数(类型为 unsigned long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。声明下面是 strtoul() 函数的原创 2017-10-30 18:53:01 · 943 阅读 · 0 评论