STM32就学笔记之C语言篇
分类:计算机编程

【unsigned】

1、rewind(FILE *卡塔尔(英语:State of Qatar):回到文件开头处
2、fprintf(), fscanf(), fgets(), fputs()
(1)、fprintf(<#FILE *restrict#>, <#const char *restrict, ...#>卡塔尔(英语:State of Qatar) //return 成功写入个数
(2)、fscanf(<#FILE *restrict#>, <#const char *restrict, ...#>卡塔尔 //return 成功读取个数
(3)、fgets(<#char *restrict#>, <#int#>, <#FILE *#>卡塔尔国 //境遇EOF, return NULL; 不然, return 传递给它的地址值
(4)、fputs(<#const char *restrict#>, <#FILE *restrict#>卡塔尔 //成功输入, 再次回到非负整数; 否则赶回EOF
3、command ? 注释xcode代码
4、fseek(卡塔尔(قطر‎, ftell(卡塔尔国达成倒序读取文件内容
fseek(fp, 0L , SEEK_END卡塔尔; //定位到文件结尾
last = ftell(fp);
for(count = 1L; count <= last; count ){
fseek(fp, -count, SEEK_END); //回退
ch = getc(fp);
if (ch == 'r') {
putchar('n');
}else{
putchar(ch);
}
}
5、fseek()参数
(1卡塔尔国第一个参数为FILE指针
(2卡塔尔(英语:State of Qatar)第一个参数为偏移量,表示从起源伊始要运动的偏离,必需是叁个Long类型的值,可认为正(前移卡塔尔(قطر‎、负(后移卡塔尔国、零(保持不动卡塔尔(英语:State of Qatar)
(3卡塔尔第八个参数为格局,用来标志起源。SEEK_SET 文件起先,SEEK_CUR当前职务, SEEK_END文件结尾
(4卡塔尔(قطر‎假如不荒谬,重回值为0,假诺有荒唐,重回值为-1
6、Ftel()函数
(1卡塔尔国Long类型,重回文件的近年来岗位,重临距文件开首处的字节数亩来规定文件的职位。文件的第三个字节到文件带头处的间距是字节0,适用于以二进制形式展开的文本
7、fgetpos(), fsetpost()函数
(1卡塔尔(قطر‎用以管理比较大文件的一定函数,选择意气风发种名称为fpost_t (file position type,文件定位类型卡塔尔(英语:State of Qatar)
(2)int fgetpos(FILE * restrict stream, fpost_t * restrict pos卡塔尔(英语:State of Qatar); 被调用时,该函数在pos所指的岗位放置五个fpost_t值,这些值描述了文本中的叁个岗位,假诺成功,函数再次来到0,不然再次来到一个非零值
(3)int fsetpos(FILE * stream, const fpost_t * pos卡塔尔(英语:State of Qatar);被调用时,该函数使用pos指向的可怜fpos_t值设定文件指针指向该值所提醒的岗位,假若成功,函数再次来到0,不然再次来到三个非零值
8、ungetc()函数
(1)int ungetc(int c, FILE *fp);
(2卡塔尔(英语:State of Qatar)将c制定的字符放回输入流中,假使向输入流中翻入了三个字符,下一遍调用标准输入函数就能读入这些字符。
(3卡塔尔(قطر‎ANSIC标保准障每趟只会放回三个字符。若是一个c实现允许将一行里的七个字符放回输入流,那些输入函数就能够以放回时相反的依次来读入
9、fflush()函数
(1)int fflush(FILE *fp);
(2卡塔尔将缓冲区任何未写的数量发送到三个由fp内定的出口文件中区,那么些过程称为刷新缓冲区
(3卡塔尔(英语:State of Qatar)假如fp是贰个空指针,将刷新掉全部的输出缓冲
(4卡塔尔(英语:State of Qatar)对于叁个输入流使用fflush(卡塔尔(英语:State of Qatar)函数的机能没有概念,只要近来二次使用流的操作不是输入操作,就足以对三个更新流(任何读-写形式的流)使用那个函数
10、setvbuf()函数
(1)int setvbuf(FILE * restrict fp, char * restrict buf, int mode, size_t size);
(2卡塔尔组建一个供规范I/O函数使用的轮番缓冲区,张开文件从此以往,在一贯不对流实行其余操作早前,可以调用那些函数
(3卡塔尔国由指针fp来钦命流,buf指向将采纳的存款和储蓄区,假诺buf的值不是NULL,就务须创设这些缓冲区
(4卡塔尔(قطر‎size变量为setvbuf(卡塔尔国函数拟定数组的深浅
(5卡塔尔(英语:State of Qatar)mode将从下列选项中选取:
①_IOFBF,完全缓冲(缓冲区满的时候刷新)
②_IOLBF,行缓冲(缓冲区满的时候照旧三个新行写入的时候)
③_IONBF,无缓冲,假若成功推行,函数会回去零值,不然重临多个非零值
11、fwrite()函数
(1卡塔尔假如把数量存款和储蓄在二个使用与程序有所相通表示方法的文件中,就城数据以二进制格局积攒
(2)size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, FILE * restrict fp);
(3卡塔尔(قطر‎指针ptr是要写入的数据块的地点
(4卡塔尔(قطر‎size表示要写入的数据块的高低(以字节为单位)
(5卡塔尔nmemb表示数据块的数码
(6卡塔尔国fp钦点要写入的文书
(7卡塔尔(英语:State of Qatar)重临成功写入的连串数,平常景况下,与Nmemb相等;若有写入错误,再次来到值就能够小与nmemb
12、fread()函数
(1)size_t fread(void * restrict ptr, size_t size, size_t nmemb, FILE * restrict fp);
(2卡塔尔国ptr为读入文件数量的内部存款和储蓄器存款和储蓄地方
(3卡塔尔(英语:State of Qatar)fp钦赐要读取的文书
(4卡塔尔国使用fread(卡塔尔(英语:State of Qatar)函数来读取通过fwrite(卡塔尔(قطر‎写入的文书数量
(5卡塔尔(قطر‎重回成功读入的品种数,符合规律情状下,与nmemb相等,读取错误的话,重临值会小于nmemb
13、综合使用
FILE *fa, *fs;
int files = 0;
char file_app[SLEN];
char file_src[SLEN];
puts("输入要追加内容的公文名:"卡塔尔(英语:State of Qatar);
gets(file_app);
if ((fa = fopen(file_app, "a")) != NULL)
{
fprintf(stderr, "不可能开荒文件 %s", file_app);
exit(2);
}
if (setvbuf(fa, NULL, _IOFBF, BUFSIZE) != 0)
{
fputs("不能够创建输出缓冲区", stderr卡塔尔(英语:State of Qatar);
exit(3);
}
puts("输入要加多内容的文书名(输入空行退出卡塔尔:"卡塔尔(قطر‎;
while (gets(file_src) && file_src[0] != '\0')
{
if (strcmp(file_app, file_src) == 0)
{
fputs("不可能增到相通的文书", stderr卡塔尔;
}
else if((fs = fopen(file_src, "r")) == NULL)
{
fprintf(stderr, "不能够开垦源文件"卡塔尔(英语:State of Qatar);
}
else
{
if(setvbuf(fs, NULL, _IOFBF, BUFSIZE) != 0)
{
fputs("不可能创制源文件缓冲区", stderr卡塔尔(قطر‎;
continue;
}
append(fs, fa);
if(ferror(fs) != 0)
fprintf(stderr, "读取源文件%s时产生错误!", file_src);
if(ferror(fa) != 0) {
fprintf(stderr, "写入文件时%s发生错误", file_app);
}
fclose(fs);
files ;
printf("FILE %s appended.n", file_src);
puts("下贰个文件:(输入空行退出卡塔尔(英语:State of Qatar)"卡塔尔国;
}
}
printf("Done.%d files appended.n", files);
fclose(fa);
return 0;
}
void append(FILE * source, FILE * dest)
{
size_t bytes;
static char temp[BUFSIZE];
while ((bytes = fread(temp, sizeof(char), BUFSIZE, source)) > 0) {
fwrite(temp, sizeof(char), BUFSIZE, dest);
}
}

技艺类博客

CSDN 月光博客

那一个网址不错

十四位系统中叁个int能积攒的多少的界定为-32768~32767,而unsigned能积累的数目范围则是0~65535。由于在微处理器中,整数是以补码格局贮存的。根据最高位的比不上,若是是1,有号子数的话便是负数;假使是无符号数,则都在表达为正数。其余,unsigned若省略后二个珍视字,大大多编译器都会以为是unsigned int。

14、feof()函数
(1卡塔尔假若近年来一回输入调用检查评定到文件结尾,feof(卡塔尔函数再次回到一个非零值,不然再次来到零值
15、ferror()函数
(2卡塔尔纵然发生读写错误,ferror(卡塔尔(قطر‎函数重回二个非零值,不然再次来到零值
16、构造注明
(1卡塔尔(英语:State of Qatar)struct 布局名{ //在main函数之上定义
经常档案的次序 类型名[];
常备等级次序 类型名[];
}; //这里有分号
(2卡塔尔(قطر‎表明构造变量:struct 布局名 变量名;
(3卡塔尔(قطر‎开头化构造:
sturcc 结构名 变量名 = {
类型1的值,
类型2的值,
类型3的值
}; //这里有分号
(4卡塔尔布局的创立开端化项目:
struct 结构名 变量名 = {
.组织里的分子名 = 值;
.构造里的分子名 = 值;
}; //这里有分号
17、构造指针
(1)struct 结构名 * 指针名;
(2卡塔尔(قطر‎结构指针名 = &结构变量名; //二个构造的名字不是该组织之处
(3卡塔尔(英语:State of Qatar)使用布局指针采访成员: 架构指针名->成员变量名; (布局指针名卡塔尔.成员变量名;
(4卡塔尔函数参数使用构造地址:double sum(const struct funds
money);
(5卡塔尔国函数参数使用构造: double sum(struct funds moolah卡塔尔;
18、结构
(1卡塔尔(قطر‎能够把多个相像构造的变量互相赋值
(2卡塔尔(قطر‎能够用作函数再次回到值
(3卡塔尔国把指针作为参数的优点:
①可职业在较早的C上,也能够在较新的C上,奉行进程快
②只须传递三个单个地址
症结:缺乏对数码的护卫
(4卡塔尔国把结果作为参数字传送递的亮点是函数管理的时原始数据的别本,比平素管理原始数据安全
(5卡塔尔(قطر‎在布局中蕴藏字符串,请使用字符数组成员。用字符指针存款和储蓄,字符存款和储蓄的内部存储器空间不在布局中
19、复合文字和结构
(1卡塔尔国 (struct 布局名卡塔尔(英语:State of Qatar){结构变量值};
20、伸缩数字成员
(1卡塔尔伸缩型数组成员必需是终极二个数组成员
(2卡塔尔(قطر‎构造中必须至少有八个别样成员
(3卡塔尔国伸缩型数组好似普通数组相似被声称,除了它的方括号内是空的
(4卡塔尔国使用malloc(卡塔尔函数莱维伸缩数组成员分配内部存款和储蓄器
21、将组织保持到文件
(1卡塔尔(英语:State of Qatar)使用fwrite(卡塔尔函数保存到文件
(2卡塔尔(英语:State of Qatar)使用fread(卡塔尔(英语:State of Qatar)函数从文件读取
22、联合
(1卡塔尔国联合是一个能在同二个仓库储存空间里(但差异有时候) 存款和储蓄分裂档案的次序数据的数据类型。
(2卡塔尔国union 联合变量名{
平时档案的次序 成员名;
常备品种 成员名;
}; //这里有分号
(3卡塔尔国把三个同台开端化为同品种的另二个同台 union 联合名 联合变量名 = 联合变量名2;
(4卡塔尔(英语:State of Qatar)开头化联合的率先个要素 union 联合名 联合变量名 = {值};
(5卡塔尔(英语:State of Qatar)制订开始化项目 union 联合名 联合变量名 = {.成员名=值, .成员名=值};
(6卡塔尔点运算符表示正在采用哪个种类数据类型,在同期内只可以存款和储蓄多少个值,尽管有丰硕的上空,也不能够何况保留三个char类型和二个int类型的值,由你负责记住当前保留在合营中的数据的种类
23、直接成员运算符 ->
(1卡塔尔(英语:State of Qatar)与针对构造或联合具名的指针一同利用,用来指明结构或同台的积极分子
24、枚举类型
(1)enum 枚举名{成员名,成员名};
(2卡塔尔(英语:State of Qatar)从手艺上讲,它们是int类型的常量
(3卡塔尔(英语:State of Qatar)默认值为 enum kids{nippy, slats, skippy, liz}; 列表中的常量被内定为0, 1, 2
(4卡塔尔(英语:State of Qatar)钦赐值为enum feline{low = 100, lynx = 500, heigh = 20020};
(5卡塔尔混合赋值:enum feline{cate, lynx = 10, puma, tiger}; cat的值为0, lynx, puma, tiger的值为10, 11, 12
25、typedef
(1)与#define分裂,typedef给出的标志名称只限于对品种,实际不是对值
(2卡塔尔国typedef的降解由编写翻译器,并不是预微处理机推行
(3卡塔尔(قطر‎即便它的限量有限,但在其受限范围内,typedef比#define更灵活
(4卡塔尔国typedef int MyType; //接下来可用MyType来声称变量了
(5卡塔尔(英语:State of Qatar)成效于决议于typedef语句所在的地点,函数内部就是有的的,函数外界正是大局的
(6)size_t是各平台用typedef注脚的变量
(7卡塔尔对组织选拔typedef,typedef struct complex{float real; float imag;} COMPLEX;//能够利用场目COMPLEX庖代struct complex来表示复数
26、奇特的扬言
(1) 表示叁个指南针,(卡塔尔国表示贰个函数, []表示二个数组
(2卡塔尔国允许使用多于1个的修饰符
①int board[8][8]; //int数组的数组
②int **ptr; //指向int的指针的指针
③int
risk[10]; //具备十个要素的数组,种种成分都以一个照准int的指针
④int (rusks)[10]; //叁个指南针,指向具备10各因素的int数组
⑤int
oof[3][4]; //二个3×4的数组,每一种成分是三个针对性int的指针
⑥int ( uuf)[3][4]; //叁个指针,指向3×4的int数组
⑦int (
uof[3])[4]; //叁个具备3各要素的数组,种种成分都是多少个针对具备4个因素的int数组的指针
(3卡塔尔(قطر‎修饰符的风华正茂一差距:
①意味着二个数组的[]和代表一个函数的(卡塔尔国具有相近的优先级,这几个优先级高于直接运算符的开始时期级。intrisks[10];//那就表示那几个生命使得risks是四个指针数组并不是多个照准数组的指针
②[]和(卡塔尔国都以从左到右举办组合的,int goods[12][50];//这些宣称使得goods是一个由10个有着50各int值的数组构成的数组,实际不是由肆拾四个颇有十一个int值的数组构成的数组
③[]和(卡塔尔(英语:State of Qatar)具备同等的优先级,但出于它们是从左到右结合的,int ( rusk)[10];//那些宣称使得rusks是二个针对具备11个int值的数组的指针
27、指向函数的指针
(1)void (
pf)(char *卡塔尔国; //pf是一个针对函数的指针
(2)void *pf(char 卡塔尔; //pf是回到一个指南针的函数
(3卡塔尔(英语:State of Qatar)使用指向函数的指针来会见函数
①(
pf)(参数);
② pf(参数);
28、c的位操作
(1卡塔尔(英语:State of Qatar)位运算符:
①按位取反:~
②按位与:&
③按位或:|
④按位异或:^
(2卡塔尔移位运算符
①左移:<<
②右移:>>
(3)位字段:
struct 字段名{
unsigned int autfd:1;
unsigned int bldfc:1;
unsigned int undln:1;
} 字段变量名;
(2卡塔尔国如若所证明的总位数超越二个unsigned int大小,那将会采纳下二个unsigned int存款和储蓄地方,不容许叁个字段超越四个unsigned int之间的分界
(3卡塔尔国编写翻译器自动地移动三个这么的字段定义,使字段按unsigned int边界对其,产生这种气象时,会在第一个unsigned int中留给贰个未命名的洞
(4卡塔尔国能够接纳未命名的字段宽度"填充"未命名的洞,使二个增长幅度为0的未命名的字段倒逼下二个字段与下三个大背头对齐

uint8_t 什么看头

uint8_t,uint16_t,uint32_t等都不是什么样新的数据类型,它们只是接收typedef给品种起的外号,新瓶装老酒的杂技。不过,不要小看了typedef,它对于你代码的维护会有很好的效率。比方C中从不bool,于是在贰个软件中,一些程序猿使用int,一些程序员使用short,会比较混乱,最佳正是用三个typedef来定义typedef char bool;平日的话,三个C的工程中不容置疑要做一些那方面包车型大巴劳作,因为您会波及到跨平台,分裂的平台会有不相同的字长,所以选用预编写翻译和typedef能够让您最得力的掩护您的代码。为了客户的惠及,C99标准的C语言硬件为大家定义了这个系列,大家放心使用就能够了。

循规蹈矩posix规范,通常整形对应的*_t类型为:

1字节uint8_t

2字节uint16_t

4字节uint32_t

8字节uint64_t

typedef unsigned          char uint8_t;

typedef unsigned short    int uint16_t;

typedef unsigned          int uint32_t;

typedef unsigned      __int64 uint64_t;

 

在C语言中unsigned的意义

unsigned char是无符号字节型,char类型变量的高低日常为1个字节(1字节=8个位),且属于整型。整型的每风流倜傥种都有无符号(unsigned)和有暗记(signed)三种档案的次序(float和double总是带符号的),在默许情形投注脚的整型变量都是有标记的项目(char有一点特别),假设需注脚无符号类型的话就要求在档案的次序前增加unsigned。无符号版本和有标记版本的区分正是无符号类型能保留2倍于有暗号类型的数据,比方15个人系统中一个int能积攒的数量的界定为-32768~32767,而unsigned能积攒的数据范围则是0~65535。

整型变量unsigned即unsigned int,在Turbo C长度为16(即0~65535),

malloc函数是分配内部存储器空间函数,参数是待分配的项目在内部存款和储蓄器中所占的字节数

【const】

c语言中static 用法

用static评释局地变量,使其形成静态存款和储蓄情势,功用域不改变;用static评释外界变量,其自己就是静态变量,那只会变动其总是格局,使其只在本文件之中有效,而别的文件不可三回九转或援引该变量。

static功效于函数:e.g.: static void func(void卡塔尔国;

动用static用于函数定义时,对函数的连年格局发生震慑,使得函数只在本文件之中有效,对其它文件是不可知的。那样的函数又叫作静态函数。使用静态函数的利润是,不用顾忌与此外文件的同名函数产生苦闷,别的也是对函数本身的豆蔻梢头种爱惜体制。

设若想要别的文件能够援用本地函数,则要在函数定义时使用首要字extern,表示该函数是外表函数,可供其余文件调用。别的在要援引其余文件中定义的表面函数的文件中,使用extern注明要用的表面函数就可以。

static 和 extern凿枘不入。

用static申明局地变量,使其变成静态存款和储蓄情势,功效域不改变;用static注解外部变量,其自己正是静态变量,那只会转移其总是方式,使其只在本文件之中有效,而其余文件不可三番五次或援引该变量。

功能于函数:

行使static用于函数定义时,对函数的一连方式发出震慑,使得函数只在本文件之中有效,对别的文件是不可以知道的。这样的函数又叫作静态函数。使用静态函数的功利是,不用忧虑与其余文件的同名函数产生忧虑,别的也是对函数本身的生龙活虎种爱慕机制。

假设想要其余文件能够引用本地函数,则要在函数定义时选用重要字extern,表示该函数是外表函数,可供其余文件调用。其余在要引用其余文件中定义的外界函数的公文中,使用extern注明要用的表面函数就能够。

const修饰的数据类型是指常类型,常类型的变量或对象的值是不能够被更新的

 

【struct和typedef struct】

struct和typedef struct彻底领略了

【uint32_t】

uint32_t是三十位无符号整形,在头文件中应有是typedef unsigned int uint32_t;

status为int的一个同义词

 

【void *】

万生机勃勃函数的参数能够是随机档案的次序指针,那么应注解其参数为void * ;

 

【::】

大局意义域符;类外申明部分

 

【sp<Death>&】

sp:智能指针

&:地址

 

【*】

BpBinder *proxy              :*表示指针

IPCThreadState* self

本文由pc28.am发布于计算机编程,转载请注明出处:STM32就学笔记之C语言篇

上一篇:python面向对象三大特征,面向对象 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • STM32就学笔记之C语言篇
    STM32就学笔记之C语言篇
    【unsigned】 1、rewind(FILE *卡塔尔(英语:State of Qatar):回到文件开头处 2、fprintf(), fscanf(), fgets(), fputs() (1)、fprintf(#FILE *restrict#, #const char *restrict,...#卡塔尔(英语
  • python面向对象三大特征,面向对象
    python面向对象三大特征,面向对象
    面向对象-组合 风流罗曼蒂克、面向进度与面向对象的简要介绍 一、继承 大器晚成 什么是多态动态绑定(在这里起彼伏的背景下行使时,一时也称得上多
  • HttpRuntime的认知与抓好明白,异步HTTP乞请操作
    HttpRuntime的认知与抓好明白,异步HTTP乞请操作
    一、说明 上边最早介绍HttpRuntime的Web.config里的构造 1卡塔尔(英语:State of Qatar) 那些类 是本身 在安分守己项目中,优化驱除实际难题时,不参照第三方代码
  • 那些年【深入.NET平台和C#编程】
    那些年【深入.NET平台和C#编程】
    一、深入.NET框架 ArrayList (非泛型集合  using System.Collections;) public void Text1(){ ArrayList al = new ArrayList (); al.Add ("刘德化");       //添加元素 al.Add ("张学友
  • 碰着搭建
    碰着搭建
    Appium是移动端的自动化测试工具,类似于前面所说的Selenium,利用它可以驱动Android、iOS等设备完成自动化测试,比如模拟点击、滑动、输入等操作,其官方