<31>【掌握】08-文件的打开和关闭+【掌握】10-字符读写函数:fgetc和fputc+【理解】11-应用:保存键盘输入的字符串+【掌握】012-字符串读写函数:fgets和fputs

【掌握】08-文件的打开和关闭

 

 

   操作文件的步骤:

 

    1)引入头文件stdio.h

    2) 建立文件指针

 

       FILE *fp = NULL;

 

    3) 打开文件

 

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

 

       如果打开成功,返回文件的首地址

              失败,返回NULL

 

    4) 操作文件

 

    5)关闭文件

    

       fclose(文件指针);

 

 
#include <stdio.h>



int main(int argc, const char * argv[]) {

    

    //定义文件指针

    FILE *fp = NULL;  //FILE结构体类型的指针

    

    //打开文件

    fp = fopen("a.txt", "r"); //r是操作方式

    //它去哪里找这个a.txt 文件

    // /Users/apple/Library/Developer/Xcode/DerivedData/C14-文件操作-fcgemvdljntpmthddfnbkmwvqxdw/Build/Products/Debug/

    

    

    //fopen成功,返回的事文件的首地址

    //fopen失败  返回NULL

    //一般我们做一个判断,当文件打开成功,我们再读写文件

    if (fp!=NULL) {

        

        //操作文件

        printf("文件打开成功!");

        

    }else{

    

        //给用户一个提示

        printf("文件打开失败,按任意键退出!\n");

        //按任意键退出

        getchar(); //要求从键盘接收一个字符

        //退出

        exit(1); //非正常退出

    }

    

    

    fclose(fp); //

    

    return 0;

}

【掌握】字符读写函数:fgetc和fputc

 (一)

include <stdio.h>

#include <string.h>



/**

 *  读写单个字符

 */



int main(int argc, const char * argv[]) {

    

    

    char ch = 'X';   //

    

         //步骤:

    

      //1、定义文件指针

   
FILE *fp = NULL; //2、打开文件 打开fputc1.txt 以 w(写,如果文件不存在,可创建)
fp = fopen("fputc.txt", "w"); //创建的时候这里是w,写的时候这里说r
//3、判断是否打开成功
if (fp!=NULL) { //4、如果打开成功,要写入字符
// 要写入的字符 文件指针 //写入字符的变量
//fputc(ch, fp);

// 写入字符串常量 // fputc('z', fp); // printf("写入成功!\n"); // // 读取字符 ch = fgetc(fp); printf("%c\n",ch); //z //// } //5、关闭文件指 fclose(fp); return 0; }
  z
总结:主要是会知道写文件的流程和读取的格式



         1)读取字符变量



         2)读取字符常量

(二)

#include <stdio.h>

#include <string.h>



int main(int argc, const char * argv[]) {

    



    

    //读写一个字符串

    

    char ch[] = "I LOVE CHINA !";   //

    

    //步骤:

    

    //1、定义文件指针

    FILE *fp  = NULL;

    

    //2、打开文件 打开fputc1.txt 以 w(写,如果文件不存在,可创建)

    fp = fopen("fputcString.txt", "r");

    //3、判断是否打开成功

    if (fp!=NULL) {

        

//        //逐字符写入到文件中

//        for (int i=0; i<strlen(ch); i++) {

//            

//            //循环写入每一个字符

//            fputc(ch[i], fp);

//            

//        }

//        

       //逐个字符从文件中读取

        

        char s = fgetc(fp);   // 不能

        //EOF是文件的末尾的标志

        //s == EOF 可以理解为,已经读取到文件的最后了

        

        //  \0

        //  \n

        //  EOF     (-1的宏定义)

        

        while (s!=EOF) {

            

             putchar(s);  //输出一个字符

            

             //再读取文件的下一个字符

             s = fgetc(fp);   //又从文件中读取一个字符

        }

       

    

        printf("\n");

    }

    //5、关闭文件指针

    fclose(fp);

    

    return 0;

}
I LOVE CHINA !
总结:如何写入字符串和写出字符串 

 

【理解】应用:保存键盘输入的字符串

 

#include <stdio.h>



int main(int argc, const char * argv[]) {

    

    //定义变量

    char ch;

    

    //打开文件

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

    //判断文件是否打开成功

    if (fp!=NULL) {



    //提示用户输入一个字符串

    printf("请输入要保存的字符串:\n");

    //接收,循环写入到文件中

    ch = getchar();

        int count=0;

    //判断是否输入了\n,如果输入了\n,

        while (ch!='\n') {

            count++;

            fputc(ch, fp); //把字符保存到文件中

            ch = getchar();//获取下一个字符

            

        }

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

        

        //读取出来并且显示到控制台商

        printf("\n");

        

        rewind(fp); //作用是把文件指针,重新指向文件首地址

        

        count = 0;

        //从文件中读取一个字符

        ch = fgetc(fp);

        while (ch!=EOF) {

            count++;

            //显示ch到控制台

            putchar(ch);

            //读取一个字符

            ch = fgetc(fp);

        }

    

        printf("本次读取了%d个字符\n",count);

    //读取显示文件

    }

    //关闭文件指针

    fclose(fp);

    

    

    return 0;

}
请输入要保存的字符串:

cxv

本次一共写入了3个字符



cxv本次读取了3个字符

 

【掌握】字符串读写函数:fgets和fputs

 (一)

#include <stdio.h>





int main(int argc, const char * argv[]) {

   

    //写入字符串到文件中

    char str[]="welcome to afuhan";

    

    //定义文件指针

    //打开文件

    FILE *fp = fopen("fputs.txt", "w");              //w是文件不存在创建,存在覆盖,a(就是append的缩写)追加是在文件的末尾追加
//判断

    int count=0;

    if (fp!=NULL) {

        

        //写字符串到文件中

        //count 返回的事本次写入的字符串的长度

        count = fputs(str, fp);

        

        printf("写入成功,本次写入%d个字符\n",count);

    }

    

    

    //关闭文件指针

    fclose(fp);



    return 0;

}
写入成功,本次写入17个字符

 

(二)

int main(int argc, const char * argv[]) {

    

 

   

    //写入字符串到文件中

    char str[]="welcome to afuhan\n";

    

    //定义文件指针

    //打开文件

    FILE *fp = fopen("fputs.txt", "r");  //r read

    

    //判断



    char str2[100];

    if (fp!=NULL) {

       //从文件中读取字符到字符数组str2中

        //   数组名   长度         文件指针

        fgets(str2, sizeof(str2), fp);       

        //fputs(str, fp);

        //sizeof(str2)  100

        //注意:

        //1)fgets读取的时候,当文件内容读取完毕后,会给字符加上结束符\0

        //2)fgets读取的时候,遇到\n或者EOF,读取结束

        printf("str2---->%s\n",str2);

        

    }

    

    

    //关闭文件指针

    fclose(fp);

    

    return 0;

}
总结:   知道fputs的用法,将一个数组读进文件



        也要知道如何将文件读到数组之中

 

你可能感兴趣的:(字符串)