笔记:预处理与文件操作

生成计算机能执行的文件的步骤

源文件.c文件 经过编译        .obj文件(目标文件) 通过链接        .exe(可执行文件)

一、预处理与宏定义

在编译之前,会提前处理一些以#开头命令,称为预处理

1、宏定义 #define

宏定义可分为无参的宏定义和有参的宏定义的

#define 宏名 宏替换   //无参的宏定义
#define pi 3.14    //用pi替换3.14
#define add(a,d) a+d     //#define 宏名(参数表) 宏替换   //带参宏的定义
#define acc(a,d) a*d

int main()
{
    print("%d", acc(add(4,5),add(2,3)));  //acc(4+5,2.3)  //结果为17
}

宏替换只用替换的功能没有计算的功能。宏的使用非常方便,一改全改,同时也可能很危险。

2、文件包含 #include

#include<xxx.h> 在系统的文件夹寻找

#include"xxx.h" 现在当前目录寻找,找不到再到系统文件目录下寻找

宏定义语句可以防止头文件重复包含 #pragma once //在头文件最前面添加

3、条件编译

平常写代码过程中,我们为了实现分支结构会经常使用if else结构,在预处理同样也有类似的功能,即条件编译。我们可以按照不同的条件去编译不同的部分,这对程序的移植和调试有着巨大的帮助 

#if ... #else  的使用
#if 表达式
  代码段1;
#else
  代码段2;
#endif
#idef ... #endif
//格式一          //格式二
#ifdef             #ifdef 宏名
   代码段;          代码段1;
#endif             #else
                     代码段2;
                   #endif

#undef  可以取消宏的定义

二、文件操作

1、打开文件   fopen(" 文件路径"," 打开方式")

fopen(" 文件路径"," 打开方式")

打开方式:

r    打开只读文件,文件必须存在
r+  打开可读写文件,文件必须存在
w   打开只写文件,文件不存在会创建,文件存在会覆盖原内容
w+ 打开可读写文件,文件不存在会创建,文件存在会覆盖原内容
a    附加形式打开只写文件
a+  附加形式打开可读写文件
b    加在上面模式之后,表示二进制方式打开,例如 “rb”、”r+b”、”wb” 等等

2、用文件指针指向文件

FILE *变量名 = fopen("名称","路径")

3、文件操作

fgetc(文件指针)                                        //读取一个字符
fgets(装字符串容器的首地址,读取字符的大小,文件指针)    //读取一个字符串
fputc(要写的字符,文件指针)                             //输入一个字符
fputs(要写的字符串,文件指针) 
                        //输入一个字符串
feof    //判断文件指针是否到达文件末尾
rewind(文件指针)   //使用文件指针强制指向文件开头
fseek(需要移动的文件指针,移动步数,指定的位置)   //移动文件指针的位置
//指定的位置  0 文件开头   1 当前位置  2 文件末尾
ftell 获取文件指针的偏移量(从开头到当前)

//格式化的数据输出
fprintf(文件指针,“格式化的内容”,参数)
//格式化输入,把文件数据输出的到程序中
fscanf(文件指针,“格式化内容”,参数)

//二进制的形式读写 
fwrite(写入的东西(取地址),大小,元素个数,文件指针) 
fread(读到那个容器,读的字节大小,个数,从哪读(文件指针)) 
   

4、关闭文件

  

fclose()

原文链接:https://blog.csdn.net/afei__/article/details/81835684

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值