c-day9
//-----------------------------------const修饰符的使用
作用:const作用可以把变量变成只读的(常量)
1)修饰变量
const int a=23;
a = 20; (错误的)
2)修饰指针
const int *p; //指向可变 ,值不能变
int const *p; //同上
int * const p; //指向不可变,值可变
const int* const p;// 指向和值都不能变
理解:
const int *p; 常量指针 指向常量的指针 值不能变,指向可变
int const *p;
int * const p; 指针常量 这是个常量 指向不可变,值可变
没办法理解就先记忆:
const 在 * 的左侧 指向可变,值不能变
const 在 * 的右侧 指向不可变 值可变
const 在 * 的两侧 指向和值都不可以变
//--------------------------------static 和 extern使用
1)修饰函数
static修饰函数:是一个内部函数,只能在本文件中访问
extern修饰函数:是一个外部函数,可以在本文件和其他文件访问(有包含关系)
定义的函数,默认是外部函数
2)修饰全局变量
static修饰全局变量: 是一个内部变量,只能在本文件使用。
extern修饰全局变量:是一个外部变量,可以在本文件和其他文件使用(有包含关系)
定义的全局变量,默认是外部变量
3)修饰局部变量
static修饰局部变量特点:延长局部变量的生命周期
extern不能定义局部变量,只能声明(没有意义)
注意:默认情况下在.h文件中声明的变量和函数都是extern类型。
//------------------------------------文件的基本概念
文件:存储外部介质上的数据集,数据集有一个名称就是文件名
文件的分类:
1)用户角度:普通文件和设备文件
2)存储的内容:
ascii文件(文本文件):
存储的流程:根据文本找到其对应的ascii码值---->转为二进制--> 写到文件中
读取流程: 二进制-->10进制-->找对应的字符-->显示出来
二进制文件:
二进制数据的存取
文件的操作流程:
1)导入头文件 stdio.h
2)定义文件指针
关键步骤:
3)打开文件
4)操作文件
5)关闭文件
//------------------文件指针
格式:FILE *fp; 结构体指针
作用:存储一个文件的首地址,指向一个文件
//---------------文件的打开和关闭
打开 fopen(文件名,操作方式);
fopen("a.txt","r");
//a.txt默认的去products目录去
关闭文件:
fclose(<#文件指针#>);
//---------------------文件的操作
//对字符的读与写
字符读写函数:
fgetc(<#文件指针#>)读
fputc(<#字符#>,<#文件指针#>)写;
void char_rw(){
//打开文件
FILE *readFile= fopen("78文件操作.c","r");//确定要读取的文件
FILE *readWrite= fopen("test.c","w");//确定要写入的文件
//操作文件
char c=fgetc(readFile);//读取第一个字符
if(readFile!=NULL&&readWrite!=NULL){
//EOF:表示这个文件读取到了最后一个字符或文件读取出错.
while (c!=EOF) { //printf("%c\n",c);
fputc(c,readWrite);//写入字符
c=fgetc(readFile);//读取下一个字符
}
}
//关闭文件.
fclose(readFile);
fclose(readWrite);
}
//对字符串的读与写
字符串读写函数:
fgets(<#字符缓存#>,<#数量#>,<#文件指针#>)读
fputs(<#字符缓存#>,<#文件指针#>)写;
void string_rw(){
//打开要操作的文件
FILE *readFile= fopen("78文件操作.c","r");//确定要读取的文件
FILE *readWrite= fopen("test.c","w");//确定要写入的文件
if(readFile!=NULL&&readWrite!=NULL){
//操作
const int SIZE=512;
char buffer[SIZE];
//NULL:表示读取出错或读取到了最后
while (fgets(buffer,===readFile)!=NULL) {
fputs(buffer,readWrite);
}
}
//操作完成,关闭文件.
fclose(readFile);
fclose(readWrite);
}
//对二进制数据(数据块)的读与写
数据块(二进制)读写函数:
fread(<#数据容器#>,<#单个数据字节数#>,<#总数#>,<#文件指针#>)读
fwrite(<#数据容器#>,<#单个数据字节数#>,<#总数#>,<#文件指针#>)写;
void er_rw(){
//打开文件
FILE *readFile= fopen("78文件操作.c","rb");//确定要读取的文件
FILE *readWrite= fopen("/Users/wengfada/Desktop/test.c","wb");//确定要写入的文件
if(readFile!=NULL&&readWrite!=NULL){
//操作
const int SIZE=512;//总数
char buffer[SIZE];//数据容器
const int COUNT =sizeof(buffer[0]);//单个数据字节数
int countTemp;
//保证至少有一次操作数据
do {
countTemp=0;
countTemp=fread(buffer,COUNT,SIZE,readFile);
fwrite(buffer,COUNT,countTemp,readWrite);
}while (countTemp==SIZE);
}
//操作完成,关闭文件.
fclose(readFile);
fclose(readWrite);
}
|
|