1)修饰函数 static修饰函数:是一个内部函数,只能在本文件中访问 extern修饰函数:是一个外部函数,可以在本文件和其他文件访问(有包含关系)
定义的函数,默认是外部函数
2)修饰全局变量 static修饰全局变量: 是一个内部变量,只能在本文件使用。 extern修饰全局变量:是一个外部变量,可以在本文件和其他文件使用(有包含关系)
定义的全局变量,默认是外部变量
3)修饰局部变量 static修饰局部变量特点:延长局部变量的生命周期 extern不能定义局部变量,只能声明(没有意义)
注意:默认情况下在.h文件中声明的变量和函数都是extern类型。
作用:const作用可以把变量变成只读的(常量) 1)修饰变量 const int a=23; a = 20; (错误的)
const int const a = 23;
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 在 * 的两侧 指向和值都不可以变
把a文件的数据读取,保存到B文件中 ( ) a为(输入) b为(输出)
//------------------文件指针 格式: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){ . 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,SIZE,readFile)!=NULL) { fputs(buffer,readWrite); } } //操作完成,关闭文件. fclose(readFile); fclose(readWrite);
}
数据块(二进制)读写函数: fread(<#数据容器#>,<#单个数据字节数#>,<#总数#>,<#文件指针#>)读 fwrite(<#数据容器#>,<#单个数据字节数#>,<#总数#>,<#文件指针#>)写; void er_rw(){
//打开文件 FILE *readFile= fopen("78文件操作.c","rb");//确定要读取的文件 FILE *readWrite= fopen("/Users/apple/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);
}
|