-
2022-03-12 19:58:58
目录
1、stdio.h
执行输入/输出操作
功能概括:
<1> 文件操作:
FILE
fclose ——关闭文件
fopen—— 打开文件
fread—— 从流中读取数据块
fwrite ——将数据块写入流
fseek ——重新定位流位置指示器
rewind ——将流的位置设置为开头
<2>格式化的输入/输出
fprintf—— 将格式化的数据写入流
fscanf—— 从流中读取格式化的数据
printf ——将格式化的数据打印到标准输出
scanf ——从stdin读取格式化的数据
<3>字符输入/输出:
fgetc ——从流中获取字符
fgets—— 从流中获取字符串
fputc—— 将字符写入流
fputs—— 将字符串写入流
getc—— 从流中获取字符
getchar—— 从stdin获取字符
gets—— 从stdin获取字符串
putc ——将字符写入流
Putchar—— 将字符写入标准输出
puts ——将字符串写入stdout
...........
2、math.h
计算常见的数学运算和转换
①三角函数
cos 计算余弦
sin 计算正弦
tan 计算切线
acos 计算反余弦
asin 计算反正弦
atan 计算反正切
atan2 用两个参数计算反正切
②指数和对数函数
exp计算指数函数
log 计算自然对数
pow 计算平方数
sqrt 计算平方根
cbrt 计算立方根
abs 计算绝对值
...........
3、stdlib.h
动态内存管理,随机数生成,与环境的通信,整数算术,搜索,排序和转换。
(1)伪随机序列生成:
rand 生成随机数
(2)动态内存管理:
calloc 分配和零初始化数组
free 取消分配内存块
malloc 分配存储块
realloc 重新分配内存块
(3)排序:
qsort 对数组的元素进行排序
...........
4、string.h
定义了几个函数来操纵C字符串和数组。
(1)复制:
Memcpy 复制内存块
memmove 移动内存块
strcpy 复制字符串
strncpy 复制字符串中的字符
(2)串联:
strcat 连接字符串
Strncat 附加字符串中的字符
(3)比较:
strcmp 比较两个字符串
strncmp 比较两个字符串的字符
(4)其他:
memset 填充内存块
strlen 获取字符串长度
...........
更多相关内容 -
c语言图形库头文件解决方法
2021-01-06 16:46:56适合C语言新手使用图形库进行编程 -
C语言中的头文件可以自己写吗?
2020-08-04 02:44:25本文介绍了C语言头文件的编写问题以及引用方法。 -
C语言头文件组织与包含原则_c语言头文件_c语言头文件组织与包含原则_
2021-09-29 17:00:05C语言头文件的编写规则,掌握后可以减少程序的BUG -
C语言中的头文件
2021-04-23 00:09:25头文件是扩展名为.h的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。在程序中要使用头文件,需要...头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。
在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它。前面我们已经看过 stdio.h 头文件,它是编译器自带的头文件。
引用头文件相当于复制头文件的内容,但是我们不会直接在源文件中复制头文件的内容,因为这么做很容易出错,特别在程序是由多个源文件组成的时候。
A simple practice in C 或 C 程序中,建议把所有的常量、宏、系统全局变量和函数原型写在头文件中,在需要的时候随时引用这些头文件。
引用头文件的语法
使用预处理指令 #include 可以引用用户和系统头文件。它的形式有以下两种:
#include
这种形式用于引用系统头文件。它在系统目录的标准列表中搜索名为 file 的文件。在编译源代码时,您可以通过 -I 选项把目录前置在该列表前。
#include "file"
这种形式用于引用用户头文件。它在包含当前文件的目录中搜索名为 file 的文件。在编译源代码时,您可以通过 -I 选项把目录前置在该列表前。
引用头文件的操作
#include 指令会指示 C 预处理器浏览指定的文件作为输入。预处理器的输出包含了已经生成的输出,被引用文件生成的输出以及 #include 指令之后的文本输出。例如,如果您有一个头文件 header.h,如下:
char *test (void);
和一个使用了头文件的主程序 program.c,如下:
int x; #include "header.h" int main (void) { puts (test ()); }
编译器会看到如下的代码信息:
int x; char *test (void); int main (void) { puts (test ()); }
只引用一次头文件
如果一个头文件被引用两次,编译器会处理两次头文件的内容,这将产生错误。为了防止这种情况,标准的做法是把文件的整个内容放在条件编译语句中,如下:
#ifndef HEADER_FILE #define HEADER_FILE the entire header file file #endif
这种结构就是通常所说的包装器 #ifndef。当再次引用头文件时,条件为假,因为 HEADER_FILE 已定义。此时,预处理器会跳过文件的整个内容,编译器会忽略它。
有条件引用
有时需要从多个不同的头文件中选择一个引用到程序中。例如,需要指定在不同的操作系统上使用的配置参数。您可以通过一系列条件来实现这点,如下:
#if SYSTEM_1 # include "system_1.h" #elif SYSTEM_2 # include "system_2.h" #elif SYSTEM_3 ... #endif
但是如果头文件比较多的时候,这么做是很不妥当的,预处理器使用宏来定义头文件的名称。这就是所谓的有条件引用。它不是用头文件的名称作为 #include 的直接参数,您只需要使用宏名称代替即可:
#define SYSTEM_H "system_1.h" ... #include SYSTEM_H
SYSTEM_H 会扩展,预处理器会查找 system_1.h,就像 #include 最初编写的那样。SYSTEM_H 可通过 -D 选项被您的 Makefile 定义。
声明:
本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
-
C语言头文件组织
2021-05-25 07:34:57一般习惯将不同功能模块放到一个头文件和一个C文件中。 例如是写一些数学计算函数://mymath.h#ifndef _mymath_H#define _mymath_Hextern int Global_A; //声明必要的全局变量......extern void fun(); //声明必要的...一、全局变量单独编写(很值得借鉴)。
一般习惯将不同功能模块放到一个头文件和一个C文件中。 例如是写一些数学计算函数:
//mymath.h
#ifndef _mymath_H
#define _mymath_H
extern int Global_A; //声明必要的全局变量
......
extern void fun(); //声明必要的外部函数
.....
#endif
//mymath.c
#include "mymath.h "
#include
…
int Global_A; //定义必要的全局变量和函数
void fun();
…
int a,b,c; //定义一些内部使用的全局变量
void somefun();
//函数实现体
void fun()
{
…
}
void somefun()
{
…
}哪个C文件需要使用只需包含头文件mymath.h就可以了。
但是我认为上面的方法虽然好,但是上面定义全局变量的方式在比较大的工程中引起不便,一个
模块与其他模块的数据传递最好通过专有的函数进行,而不要直接通过数据单元直接传递(这是VC++的思想),因此不建议在模块的头文件中声明全局变量;
全局变量最好统一定义在一个固定的文件中,所以可以采用下面的方法:
定义一个Globel_Var.C文件来放全局变量,然后在与之相对应的Globel_Var.H文件中来声明全局变量
例如:
——————————————————————————————————
//Globel_Var.c
/*******定义本工程中所用到的全局变量*******/
int speed;
int torque;
…
…
…——————————————————————————————————
//Globel_Var.H
/*******声明本工程中所用到的全局变量*******/
extern int speed;
extern int torque;
…
…——————————————————————————————————
这样哪个文件用到这两个变量就可以在该文件的开头处写上文件包含命令;例如aa.C文件要用到speed,toque两个变量,可以在aa.H文件中包含Globel_Var.H文件。
——————————————————————————————————
//aa.H文件
#include “Globel_Var.H”
…
extern void fun(); //声明必要的接口函数
…
//aa.c文件
#include “aa.H”//每个程序文件中包含自己的同名头件
int a,b,c; //定义一些本文件内部使用的局部变量
void somefun();
//函数实现体
void fun()
{
int d,e,f; //定义一些本函数内部使用的局部变量
…
}
void somefun()
{
…
}
…——————————————————————————————————
在bb.c文件中用到aa.c文件中的函数void fun()或变量的文件可以这样写
//bb.H文件
#include “aa.H”
…
extern int fun_1(void);//声明本文件的接口函数
…
//bb.c文件
#include “bb.H”
…
int fun_1(void)
{
…
fun();//调用aa.C文件中的fun()函数
…
}——————————————————————————————————
在主函数中可以这样写:
主文件main没有自己的头文件
//main.c文件
#include
#include “Globle_Var.H”
#include “aa.H”
#include “bb.H”
…
char fun_2();//声明主文件所定义的函数
int i,j; //定义一些本模块内部使用的局部变量
char k;
…
void main()
{
…
fun();
…
i = fun_1();
…
k = fun_2();
…
}
char fun_2()
{
…
}——————————————————————————————————
这样即不会报错又可以轻松使用全局变量。
二、如果在全局变量前加入static或者const(隐式为static类型的变量) 如下
// xxxx.h
...
const double PI = 3.1415926;
static void* NULL = 0;
...
//这个头文件是可以包含在多个编译单元的。
三、头文件编写参考以下基本的规则
理想的情况下,一个可执行的模块提供一个公开的接口,即使用一个*.h文件暴露接口,但是,有时候,一个模块需要提供不止一个接口,这时,就要为每个定义的接口提供一个公开的接口。在C语言的里,每个C文件是一个模块,头文件为使用这个模块的用户提供接口,用户只要包含相应的头文件就可以使用在这个头文件中暴露的接口。所有的头文件都建议参考以下的规则:
1. 头文件中不能有可执行代码,也不能有数据的定义,只能有宏、类型(typedef,struct,union,menu),数据和函数的声明。
例如以下的代码可以包含在头文件里:
#define NAMESTRING “name”
typedef unsigned long word;
menu{ flag1,flag2};
typedef struct
{
int x;
int y;
}Piont;
extent Fun(void);
extent int a;全局变量和函数的定义不能出现在*.h文件里。例如下面的代码不能包含在头文件:
int a;
void Fun1(void)
{
a++;
}
2. 头文件中不能包本地数据(模块自己使用的数据或函数,不被其他模块使用)。
这一点相当于面向对象程序设计里的私有成员,即只有模块自己使用的函数,数据,不要用extern在头文件里声明,只有模块自己使用的宏,常量,类型也不要在头文件里声明,应该在自己的*.c文件里声明。
3. 含一些需要使用的声明。在头文件里声明外部需要使用的数据,函数,宏,类型。
4. 防止被重复包含。使用下面的宏防止一个头文件被重复包含。
#ifndef MY_INCLUDE_H
#define MY_INCLUDE_H
#endif
四、头文件编写参考更多的规则(暂时只能理解1、2、3、4)
有一些头文件是为用户提供调用接口,这种头文件中声明了模块中需要给其他模块使用的函数和数据,鉴于软件质量上的考虑,处理参考以上的规则,用来暴露接口的头文件还需要参考更多的规则:
1. 一个模块一个接口,不能几个模块用一个接口。
2. 文件名为和实现模块的c文件相同。abc.c--abc.h
3. 尽量不要使用extern来声明一些共享的数据。因为这种做法是不安全的,外部其他模块的用户可能不能完全理解这些变量的含义,最好提供函数访问这些变量。
4. 尽量避免包含其他的头文件,除非这些头文件是独立存在的。这一点的意思是,在作为接口的头文件中,尽量不要包含其他模块的那些暴露*.C文件中内容的头文件,但是可以包含一些不是用来暴露接口的头文件。
5. 不要包含那些只有在可执行文件中才使用的头文件,这些头文件应该在*.c文件中包含。这一点如同上一点,为了提高接口的独立性和透明度
6. 接口文件要有面向用户的充足的注释。从应用角度描述个暴露的内容。
7. 接口文件在发布后尽量避免修改,即使修改也要保证不影响用户程序。
五、多个代码文件使用一个接口文件(暂时不能完全理解)
这种头文件用于那些认为一个模块使用一个文件太大的情况。对于这种情况对于这种情况在参考上述建议后,也要参考以下建议。
1. 多个代码文件组成的一个模块只有一个接口文件。因为这些文件完成的是一个模块。
2. 使用模块下文件命名
3. 不要滥用这种文件。
4. 有时候也会出现几个*.c文件用于共享数据的*.h文件,这种文件的特点是在一个*.c文件里定义全局变量,而在其他*.c文件里使用,要将这种文件和用于暴露模块接口的文件区别。
5. 一个模块如果有几个子模块,可以用一个*.h文件暴露接口,在这个文件里用#include包含每个子模块的接口文件。
还有一种头文件,说明性头文件,这种头文件不需要有一个对应的代码文件,在这种文件里大多包含了大量的宏定义,没有暴露的数据变量和函数。这些文件给出以下建议:
1. 包含一些需要的概念性的东西.
2. 命名方式,定义的功能.h
3. 不包含任何其他的头文件.
4. 不定义任何类型.
5. 不包含任何数据和函数声明.
上面介绍了C头文件的一些建议,下面介绍C代码文件*.c文件的一些建议,*.c文件是C语言中生成汇编代码和机器码的内容,要注意以下建议:
1.命名方式 模块名.c
2,用static修饰本地的数据和函数。
3,不要使用externa。这是在*.h中使用的,可以被包含进来。
4,无论什么时候定义内部的对象,确保独立与其他执行文件。
5,这个文件里必须包含相应功能函数。
结束语:上面介绍了一些C文件组织的建议,用于提高C语言项目的质量,在以后的C项目组织中,学习面向对象和COM的思想,将这些思想加入到C程序中,能够写出更高质量的代码。上面的建议在具体的项目里应该灵活运用。另外,C工程中经常有一些汇编代码文件,这些文件也要使有*.h头文件暴露其中的数据和函数,以便其他*.c文件包含使用。
转自:http://www.2cto.com/kf/201109/104897.html
点击打开链接
-
C语言如何自定义头文件——一看就废!!!
2021-10-22 12:19:05为什么要自定义头文件? 如果在一个文件中,写上... 第一步,我们需要创建一个.h文件,再把自己写好的函数放入文件中就ok了 第二步,再主程序中引入该头文件(我起的名字是max.h) 注意:...为什么要自定义头文件?
如果在一个文件中,写上成百上千行的代码,那么这些代码让人阅读起来是真的烦。因此,我们可以引入头文件,把自己写的函数放入头文件中,然后直接调用到主程序中,这样在主程序中看起来就比较清晰。
那如何自定义头文件呢?
第一步,我们需要创建一个.h文件,再把自己写好的函数放入文件中就ok了
第二步,再主程序中引入该头文件(我起的名字是max.h)
注意:自己定义的头文件,一定要用双引号,不能用尖括号的!!!
第三步,调用自定义头文件的函数,实现函数就完事了!
最终结果就是:
是不是我说的,一看就废!!!其实还有一部分问题,比如说重复引入自定义头文件就会报错,但重复引入系统的头文件就没问题,该问题应该如何处理。
不过先学会使用才是最重要的,之后的问题会一步一步处理的!!!
-
C语言中常用的几个头文件及库函数
2021-01-01 07:43:18不完全统计,C语言标准库中的头文件有15个之多,所以我主要介绍常用的这四个头文件stdio.h,string.h,math.h,stdlib.h,以后用到其他的再做补充。下面上干货: 1.<stdio>:定义了输入输出函数、类型以及宏,函数几乎... -
C语言在头文件中定义const变量详解
2021-01-01 11:12:11C语言在头文件中定义const变量详解 在头文件中定义const不会有多变量的警告或错误,如果该头文件被大量包含会造成rom空间的浪费。 通过查看*.i文件的展开呢,可以发现每个.i文件都会有相应的变量展开。 查看*.map... -
C语言队列的实现及头文件
2017-12-28 21:58:52在自身写C实现二叉树时所写的队列的实现代码,内附代码和头文件,在头文件中修改 QueueType 的define还有 InputQueue 函数就可以适配其余功能例如其他结构体。 初始QueueTpye 为int型 -
C语言引用头文件
2021-12-29 15:57:43C语言中引用头文件有两种方式: “” include<fileName.h> 引用系统头文件一般用<>。 <> include"fileName.h" 引用自己定义的头文件一般用" "。 -
C语言头文件库
2018-05-06 13:18:39C语言头文件库大全,工具下载安装后扣出的所有头文件。 -
C语言为什么需要头文件
2021-05-20 08:09:23https://www.toutiao.com/a6703144603240890891/在C语言中,头文件是程序各部分之间保证信息一致性的桥梁,是连接程序对象定义和使用的纽带。通常开发C程序的程序员会把一个程序分为两类:以.h为扩展名的辅助性文件... -
c语言学习部分头文件
2019-11-29 16:43:13对c语言的学习,在开始学习c语言或者c++的时候,我们总是对程序的头文件比较头疼,每个代表的具体是什么意思,该怎么跟程序联系,现在我将我总结的部分分享,有不足的希望大家指出,和大家一起学习: -
C语言之在头文件中定义全局变量
2021-05-28 07:02:19通常情况下,都是在C文件中定义全局变量,在头文件中声明,但是,如果我们定义的全局变量需要被很多的C文件使用的话,那么将全局变量定义在头文件里面会方便很多,那到底是如何实现的?os_var.c文件内容1 #define OS... -
C语言头文件
2021-11-14 21:32:22C语言头文件 -
C语言之Sleep函数
2021-01-21 17:11:51在VC中使用带上头文件#include ,在Linux下,gcc编译器中,使用的头文件因gcc版本的不同而不同#include 在VC中,Sleep中的第一个英文字符为大写的S ,在linux下不要大写,在标准C中是sleep, 不要大写,简单... -
C语言的头文件详解
2020-06-26 21:43:06C语言的头文件详解 引言 在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要... -
C语言常用头文件
2021-04-01 17:44:02strcspn()函数 *原型:size_t strcspn(const char str1, const char str2) 作用:检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。 strerror()函数 *原型:char strerror(int errnum) 作用:从... -
C语言中,头文件和源文件的关系
2015-04-10 11:49:46通俗易懂的语言来解释C语言中,头文件和源文件的关系 -
C语言常见头文件汇总
2020-05-12 23:45:54在标准C库中设计的情况下,并非所有运行环境都需要生成自动信号,并且某些其他环境不仅会生成这些信号,还会生成更多特定的信号。但无论如何,所有通过调用函数raise显式生成的信号都将传递到其相应的信号处理程序... -
第十四章 C语言头文件的编写_C语言标准库以及标准头文件
2022-02-27 09:46:07源文件通过编译可以生成目标文件(例如 GCC 下的 .o 和 Visual Studio 下的 .obj),并提供一个头文件向外暴露接口,除了保护版权,还可以将散乱的文件打包,便于发布和使用。 实际上我们一般不直接向用户提供目标... -
C语言栈的实现及头文件
2017-12-28 21:57:30在自身写C实现二叉树时所写的栈的实现代码,内附代码和头文件,在头文件中修改 StackType 的define还有 InputStack 函数就可以适配其余功能例如其他结构体。 -
为什么C语言要有头文件(补充)
2021-12-16 19:49:27为什么C语言需要头文件 -
c语言中的头文件
2020-12-20 20:00:23以下是假设名称为graphics.h的头文件:头文件一般由四部分内容组成:(1)头文件开头处的版权和版本声明。(2)预处理块。(3)inline函数的定义。(4)函数和类结构声明等。在头文件中,用 ifndef/define/endif... -
c语言编程常用头文件,下载即可引用。
2022-03-12 09:50:19c语言编程常用头文件 -
C语言头文件大全
2021-05-19 18:49:47一些C语言编译器却遵循IEEE754(例如frinklin C51) ---------------------------------------- 反余弦 acos 反正弦 asin 反正切 atan 反正切2 atan2 余弦 cos 正弦 sin 正切 tan 双曲余弦 cosh 双曲正弦 sinh 双曲正... -
C语言自定义头文件
2021-05-31 17:30:19一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的。只知道调用系统库函数时,要使用#include语句将某些头文件包含进去。其实,头文件跟.C文件一样,是可以自己写的。头文件是一种文本文件,使用文本... -
C语言自己编写头文件
2018-04-25 15:47:011.首先编写head.h 1 #ifdef _HEAD_H 2 #define _HEAD_H 3 int add(int,int,int); 4 #endif 2.在同级目录下编写head.c 1 #include "head.h" 2 #include <... 5 in...