c语言函数

Linux环境下C语言getopt函数的详细解析

别等时光非礼了梦想. 提交于 2020-03-03 07:11:40
该函数在头文件 getopt.h 中。 函数原型: int getopt ( int argc , char * const argv [ ] , const char * optstring ) ; 返回值为int类型,其实解析成功一个选项时(可能这时看不懂,没关系,后面会解释)这个返回的就是一个字符,因为字符可以转为整数。 若解析完毕,则返回-1。 前两个参数大家都知道,就是main函数的参数选项: argc 是参数个数, argv 是参数的字符串数组(不要忘记 argv[0] 是"./可执行文件名")。而第三个参数就是 选项字符串 。 什么是 选项字符串 ? 选项 大家都知道,比如: gcc -o test test.c gcc -v 上面的 -o 、 -v 就是选项,其中 -o 是带参数的选项,其参数为 test ,而 -v 是不带参数的选项。 那么说了这么多, 选项字符串其实就是一定格式的字符串,它决定了传给程序的参数 argv中 可以有哪些选项,而这些选项中哪些可以有参数。然后运行程序时, getopt 函数对 argv 进行解析,依次返回成功解析的选项,解析完毕后返回-1。 举个例子:选项字符串给定:“ab:c::”,那么说明运行程序可以给最多三个参数,分别为 -a , -b 和 -c , 其中 -a ,因为 没有后跟冒号 是不可以有参数的; -b ,因为

C语言学习笔记<八>

别来无恙 提交于 2020-03-02 06:40:14
通过使用联合可以用不同的方式操作内存中同一段区域。 计算机中存储数据的方式有两种,把低位数据存储在低地址字节中的方式叫做小端存储方式,相反就叫大端存储方式,我们的计算机采用的是小端存储方式。 使用枚举类型可以把一组名称转换成整数,从数字0开始。 堆里的变量的生命周期是由程序员来管理的, 可以使唤用C语言提供的函数对堆中的变量进行管理,为了使用这些函数需要包含头文件stdlib.h。 malloc函数可以从堆中分配指定个数的连续字节把首字节地址返回。如果失败则返回NULL . free 函数可以把堆中的变量释放掉,需要首字节地址作为参数。 calloc 函数也可以从堆中分配变量,并且保证把变量都清0. realoc 函数可以调整一段已经分配好的内存空间的大小。如果失败返回空地址。特殊情况下操作效果类似于malloc 或free.0 const 指针有两种声明方法 const int *p_value; int * const p_value; 前一种指针表示的整数变量不可以被修改 后一种指针表示的指针变量本身不可以被修改。 二级指针变量用来记录一级指针变理的地址,声明方法如下 int **pp_value; 二级指针变理可以用来表示它自己和对应的一级指示变量以及整数变量,使用方法如下 pp_value 表示二级指针 *pp_value 表示对应的一级指针。 **pp_value

typedef 类型重命名 和 #define 宏定义(1)

大憨熊 提交于 2020-03-02 05:57:45
http://www.blogjava.net/jasmine214--love/archive/2010/11/29/339307.html 在现实生活中,信息的概念可能是长度,数量和面积等。在C语言中,信息被抽象为int、float和double等基本数据类型。 从基本数据类型名称上, 不能够看出其所代表的物理属性 ,并且int、float和double为系统关键字,不可以修改。 为了解决用户自定义数据类型名称的需求,C语言中引入类 型重定义语句typedef ,可以为数据类型定义新的类型名称,从而 丰富数据类型所包含的属性信息 。 typedef的语法描述 : typedef 类型名称 类型标识符; 例如:typedef double LENGTH; typedef unsigned int COUNT; typedef 的主要应用有如下的几种形式 : 1) 为基本数据类型定义新的类型名 。例如: typedef unsigned int COUNT; typedef double AREA; 此种应用的主要目的,首先是丰富数据类型中包含的属 性信息,其次是为了系统移植的需要,稍后详细描述。 2) 为自定义数据类型(结构体、公用体和枚举类型)定义简洁的类型名称(在c++中没有这个必要了,因为直接可以使用类型名定义变量,前面不用加struct) 。例如: struct

C语言文件操作详解

限于喜欢 提交于 2020-03-02 04:13:23
C语言文件操作详解 C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有:       文件的打开操作 fopen 打开一个文件       文件的关闭操作 fclose 关闭一个文件       文件的读写操作 fgetc 从文件中读取一个字符               fputc 写一个字符到文件中去               fgets 从文件中读取一个字符串               fputs 写一个字符串到文件中去               fprintf 往文件中写格式化数据               fscanf 格式化读取文件中数据               fread 以二进制形式读取文件中的数据               fwrite 以二进制形式写数据到文件中去               getw 以二进制形式读取一个整数               putw 以二进制形式存贮一个整数     文件状态检查函数 feof 文件结束               ferror 文件读/写出错               clearerr 清除文件错误标志               ftell 了解文件指针的当前位置       文件定位函数 rewind 反绕              

01.C语言程序的基本结构1

柔情痞子 提交于 2020-03-01 23:19:58
文章目录 一、C语言基础知识的学习方法 二、C语言程序开发的流程 三、安装C语言的编译器 四、C程序的基本结构 1、程序的注释 2、预处理指令 3、主函数的入口 4、主函数体 五、编译并执行 C 程序 六、知识总结 七、课后作业 八、版权声明 一、C语言基础知识的学习方法 1)我的课程内容是精心整理的,某些知识点可能没有提到应用场景,但绝对不会是没用的知识。课程中没有提到的知识可以了解一下,但不必深入学习,意义不大。 2)学习不要贪快,欲速则不达的道理大家应该明白,学习的重点是培养写程序的感觉。 3)不要记笔记,不要记关键字,不要记函数的参数,忘了就忘了,忘了是因为没有经过实战,所以,到了项目实战课程的时候,忘了内容很自然的会全部想起来。 4)不要用手机看视频,看着看着就想睡觉,学习的过程是边看边写,没有看出来的程序员。赵括,知道不?就是那个空读兵书不成器的家伙,只看书看视频不写程序,和赵括没什么不同。 5)程序员的指法很重要,翘着二郎腿,嘴里叨着烟,挥舞一指禅,一副吊儿郎当的样子,是成不了程序员的。 6)学习的过程中遇到的问题,如果三十分钟解决不了,不要纠缠,在群里向大家请教。但是,反对遇到问题不经思考就提问的方式。 7)开始学习C语言之前,必须先熟悉Linux环境,掌握Linux常用命令和vi的基本用法。 8)高手都是从菜鸟开始的,只要您按视频教程一步一个脚印的学习

C语言进阶——函数

瘦欲@ 提交于 2020-03-01 16:54:49
Sunshine__sunny的快乐码奴生活 函数的声明,实现与调用 模块化 封装代码块 函数就是代码块 { } == 独立空间 功能模块:一个功能对应一个函数 函数名 ( type param1 , type param2 ) { 代码块 return ; } 驼峰命名法 add download parse scaleImageToSize int add ( int a , int b ) { } 定义函数的两种方式 1.声明和实现一起 int add ( int a , int b ) { int sum = a + b ; return sum ; } 先声明 后实现(通常使用这种方式) 通过调用函数的函数名 int minus ( int a , int b ) ; int minus ( int a , int b ) { return a - b ; } main.cpp # include <stdio.h> # include "Calulator.h" //1.程序的入口函数 //main.cpp 是为了让阅读者知道这里写的是入口函数 // 2.将不同的功能模块用 .h .cpp 来封装 //.h 头文件 函数声明 不可实现 // .cpp .c 实现文件 函数的具体实现{} //3.导入头文件进行使用 int main ( ) { printf ( "1 +

C语言程序的基本结构

久未见 提交于 2020-03-01 13:53:54
一、C语言基础知识的学习方法 1)我的课程内容是精心整理的,某些知识点可能没有提到应用场景,但绝对不会是没用的知识。课程中没有提到的知识可以了解一下,但不必深入学习,意义不大。 2)学习不要贪快,欲速则不达的道理大家应该明白,学习的重点是培养写程序的感觉。 3)不要记笔记,不要记关键字,不要记函数的参数,忘了就忘了,忘了是因为没有经过实战,所以,到了项目实战课程的时候,忘了内容很自然的会全部想起来。 4)不要用手机看视频,看着看着就想睡觉,学习的过程是边看边写,没有看出来的程序员。赵括,知道不?就是那个空读兵书不成器的家伙,只看书看视频不写程序,和赵括没什么不同。 5)程序员的指法很重要,翘着二郎腿,嘴里叨着烟,挥舞一指禅,一副吊儿郎当的样子,是成不了程序员的。 6)学习的过程中遇到的问题,如果三十分钟解决不了,不要纠缠,在群里向大家请教。但是,反对遇到问题不经思考就提问的方式。 7)开始学习C语言之前,必须先熟悉Linux环境,掌握Linux常用命令和vi的基本用法。 8)高手都是从菜鸟开始的,只要您按视频教程一步一个脚印的学习,一定能成为优秀的程序员。 二、C语言程序开发的流程 现阶段,我们编写的C程序比较简单,程序开发的流程如下: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dzYMWbVU-1583040912134)

嵌入式C语言编程小知识总结

試著忘記壹切 提交于 2020-03-01 08:38:58
嵌入式C语言编程小知识总结 1. 流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件执行”功能。 2. 在LPC2200系列中: 可以通过过下面的程序延迟10毫秒: for(i=0;i<200;i++) { for(j=0;j<200;j++); } 3. 通过下面语句将一个16位的变量放在两个8位的变量中。 //IP数据报总长度高字节 IpHeadUint8[10]=(IpHead.e_ip.Crc&0xff00)>>8; //IP数据报总长度低字节 IpHeadUint8[11]=IpHead.e_ip.Crc&0x00ff; 4. 在对全部数组元素赋初值时,可以不指定数组长度。 eg;inta[]={1,2,3,4,5}; 但如果当输出第a[5]以上的元素时,系统回输出随机数值,所以使用此方法时,不能使用超过初始值元素以上的元素。 5. 由于ADS先天性的对printf不支持;因此不便于我们调试,可以利用串口输出来代替printf来调试。 6. 用或运算,可使某位置为1,其它位不变 eg: PINSEL0 |= 0x00000005; //设置串口引脚 使第0位和第二位置一,其他位不变。 7

C语言获取SYSTEMTIME

╄→尐↘猪︶ㄣ 提交于 2020-03-01 04:55:10
C语言中如何获取时间?精度如何? 1 使用time_t time( time_t * timer ) 精确到秒 2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒 3 计算时间差使用double difftime( time_t timer1,time_t timer0 ) 4 使用DWORD GetTickCount() 精确到毫秒 5 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒 6 要获取高精度时间,可以使用 BOOLQueryPerformanceFrequency(LARGE_INTEGER lpFrequency) 获取系统的计数器的频率 BOOLQueryPerformanceCounter(LARGE_INTEGER lpPerformanceCount) 获取计数器的值 然后用两次计数器的差除以Frequency就得到时间。 7 Multimedia Timer Functions The following functions areused with multimedia timers. timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime // ************************

C语言string字符串函数memset()、memchr()、memcpy()\strcat()、strncat()、strchr()

旧巷老猫 提交于 2020-02-28 05:29:55
1.memchr() 原型:void memchr(const void str, int c, size_t n) 作用:在 str的前n个字节中寻找c 返回值:一个指向匹配字节的指针 否则空指针(第一个匹配的值的指针) 2.strchr() 原型:char strchr(const char*s,int c) 返回值:匹配字节的指针 区别:memchr检测的是一段内存,strchr检测的是一个字符串 如果一段内存中有0x0的话,不能用strchr去查找的,因为遇到0x0会当作字符串的结束符停止。而mem是根据后面的n停止。 # include <stdio.h> # include <string.h> int main ( ) { char * p1 , * p2 ; char ch [ ] = { "Nthing is impossible,Believe yourself!" } ; p1 = ( char * ) memchr ( ch , 'i' , strlen ( ch ) ) ; p2 = strchr ( ch , 'i' ) ; printf ( "Memchr()搜索i:%s\n strhr()搜索i:%s" , p1 , p2 ) ; return 0 ; } 运行结果: Memchr()搜索i:ing is impossible,Believe