黑马程序员技术交流社区

标题: ios-c语言基础 [打印本页]

作者: 王元18611727076    时间: 2015-10-29 19:46
标题: ios-c语言基础
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);
   
   
}

作者: 崔节帅    时间: 2015-10-29 22:24
作为菜鸟的我真心的看不懂啊。求大神赐教
作者: lixp    时间: 2015-10-29 22:32
说的很详细,之前很多不知道的学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2