c语言文件和特殊修饰符

static和extern:

 static修饰变量(可以修饰局部变量),只有包含那个变量定义的源代码文件可以访问(内部变量)

 延长局部变量的生命周期,从程序启动到退出

 作用:static定义的变量作用域会延长

      static定义变量的语句只会被执行一次

 extern定义的变量哪个源文件都可以使用,只要声明了就可以(外部变量)

 extern不可以修饰局部变量

 

 static对全局变量的作用

    static修饰的全局变量只能在当前文件中使用,而不能在其他文件中使用

 

 static 修饰的函数是内部函数(只能在定义的文件中使用)

 extern 修饰的函数可以在内部和外部使用(可以在头文件中声明也可以在使用之前声明)

12)文件操作:

fopen函数用来打开一个文件,一般形式为:

 文件指针变量名 = fopen(文件名,文件使用方式)

 FILE *fp = NULL;

 fp = fopen ("a.txt", "r"); //以只读方式打开文件

    if(fp != NULL){

        //操作文件

    }else{

        //提示用户

    }

 fclose(fp);

 正常关闭文件fclose返回0,如果返回其它则关闭出错。如果没有关闭,则导致文件写入失败

 

 文件操作步骤:

 1) 建立文件指针

    FILE *fp = NULL;

 2) 打开文件

    fopen(文件名,操作方式);

    如果打开成功,返回文件首地址,失败返回NULL;

 

 字符读写函数:

 fputc(字符量,文件指针);//待写入的字符量可以是字符常量或变量

 fputc('a', fp);

 例:

 char ch = 'X';

 FILE *fp = NULL;

 fp = fopen("fputs.txt", "w");

 if(fp != NULL){

    fputc(ch, fp);

    printf("写入成功");

    //ch = fget(fp);

 }

 fclose(fp);

 

 char s = fgetc(fp);

 while(s != EOF){   //EOF文件末尾的标志

    putchar(s);

    s = fgetc(fp);  //系统自动读取下一个字符

 }

 

 char ch;

 FILE *fp = fopen("inputString.txt", "w+");

 if(fp = NULL){

    printf("请输入字符串:");

    ch = getchar();

    int count = 0;

    while(ch != '\n'){

        count++;

        fputc(ch, fp);

        ch = getchar();

    }

    printf(" 一 共输入了%d个字符\n", count);

 

    rewind(fp);  //把文件指针重新指向文件头

    ch = fgetc(fp);

    while(ch != EOF){

        putchar(ch);

        ch = fgetc(fp);

    }

 fclose(fp);

 return 0;

 }

 

 count = fputs(str, fp);//count返回本次写入字符串长度

 

 char str[50];                  //fgets读取时,当文件内容读取完毕时,会自动加上\0

 fget(str, sizeof(str), fp);    //fgets读取时,当读取到\n或EOF时,读取结束

 

 

 char *s = "asdfasd";

 fputs(s, fp);

 

 char str[3];//长度为3,一个汉子读取一半,长度为4全部读取

 fgets(str, sizeof(str), fp);

 

 fread(buffer, size, count, fp)

 fwrite(buffer, size, count, fp)

 buffer:表示存放输入输出数据的首地址。

 size:表示数据块的字节数

 count:表示要读写的数据块块数

 fp:表示文件指针

 

 int a= 1, b = 2;

 fprintf(fp,"%d#%d;", a, b);

 fscanf(fp, "%d,%d", &arr[i][0], &arr[i][1]);

 

 struct Struct stu;

 fseek(文件指针,位移量,起始点)

 指针定位:

 fseek(fp, sizeof(struct Student), SEEK_SET);     //SEEK_SET文件首

 从文件中读取信息:

 freak(&str, sizeof(struct Student), 1, fp);

 

posted @ 2015-07-24 19:31  do+better  阅读(221)  评论(0编辑  收藏  举报