29、文件操作--顺序文件的写操作

来源:互联网 发布:赢时胜软件上海分公司 编辑:程序博客网 时间:2024/06/09 21:03

在C中,文件的输入与输出有4种方式
1、字符输入输出
2、字符串输入输出
3、格式化输入输出
4、数据库输入输出

文件打开采用函数fopen(),声明格式如下:

FILE *fopen(const *filename, const *mode);

这里写图片描述
注意:文件操作完成后必须要关闭,否则会造成数据丢失。关闭函数是 fclose(),声明形式为:fclose(FILE *fp)

例1:新建一个文件,为 test1.txt, 存放在 D:\test\file_operate 目录下

#include<stdio.h>void main(){    FILE * fp;  //定义文件指针    fp=fopen("D://test//file_operate//testfile.txt","w"); //以写的方式打开文件    //fp=fopen("D:\test\file_operate\testfile.txt","w"); //这种格式在 VS2012中打不开    if(fp==NULL)    {        printf("File Not created!");    }    else    {        printf("File created!\n");        fclose(fp);    }}

这里写图片描述

顺序文件的写操作

1、基于字符的写文本文件操作
  字符的输出函数是 fputc(),声明格式是:
  int fputc(char c, FILE *fp);
  参数 c 是要写入文件的字符变量,fp 是已经打开的文件中指针,函数返回值为整型数值。如果成功将 c 写入,函数返回值是 c,如果不能成功写入文件,函数返回值是 EOF。EOF 表示文件结尾。
 
例2:将用户输入的字符写入文件

// 例:将用户输入的字符写入文件#include<stdio.h>#include <cstdlib>void main(){    FILE * fp;  //定义文件指针    char c;    int i;    fp=fopen("D://test//file_operate//test1.txt","w"); //以写的方式打开文件    if(fp==NULL)    {   // 如果打开不成功,输出错误信息后退出程序        printf("File Not created!");        exit(0); //    }    else    {        printf("Please input the chars\n");        for (i=0;i<10;i++)        {           scanf("%c",&c);           fputc(c,fp); //将输入的字符存放到文件中        }        fclose(fp);    }}

这里写图片描述

2、基于字符串的写文本文件操作

  写字符串的函数是 fputs(),声明格式是:
  int fputs(char *str, FILE *fp);
  参数 str 可以是一个字符串、一个字符数组、一个指向字符串的指针。fp 是文件指针,函数 fputs() 的返回值是整型数据,如果文件写入成功,它将返回最后写入文件的那个字符,否则返回值为 EOF。
 
例3:将用户输入的一个字符串写入文件

#include<stdio.h>#include <cstdlib>void main(){    FILE * fp;  //定义文件指针    char ch[80];    fp=fopen("D://test//file_operate//String.txt","w"); //以写的方式打开文件    if(fp==NULL)    {   // 如果打开不成功,输出错误信息后退出程序        printf("File Not created!");        exit(0); //    }    else    {        printf("Please input the chars\n");        gets(ch);        fputs(ch,fp);        fclose(fp);    }}

这里写图片描述

3、格式化写文本文件操作

  格式化写文本文件的函数是 fprintf(),声明格式是:
  int fprintf(FILE *fp,格式字符串,参数1,参数2,…);
  fprintf()的第一个参数是文件指针,后面参数的含义与 printf()函数的相对应函数相类似。fprintf()的作用是把格式字符串所指定的输出信息输出到文件 fp所指定的文件中去。fprintf()的返回值是整型数据,表示写入文件的字节数,如果写操作发生错误时,返回值为负值。
 
例4:将用户输入的一个字符串写入文件中,采用格式写入的方式。

#include<stdio.h>#include <cstdlib>void main(){    FILE * fp;  //定义文件指针    char ch[80];    fp=fopen("D://test//file_operate//String.txt","w"); //以写的方式打开文件    if(fp==NULL)    {   // 如果打开不成功,输出错误信息后退出程序        printf("File Not created!");        exit(0); //    }    else    {        printf("Please input the chars\n");        gets(ch);        fprintf(fp,"The string is: %s",ch);        fclose(fp);    }}

这里写图片描述

4、写数据块

   前面几种写文件的方式,都是将一个一个的变量写入到文件中去。除了写变量的方式以外,还可以以数据块为单位来写文件。
  这种方式写文件,实际上是将内存中的数据直接写到文件中去,因此,必须要指明从内存区的什么位置开始写,写多少数据,每个数据占用字节数等。把数据块写入文件的函数是:
  unsigned fwrite(void *buffer,int size,int n,FILE *fp);
  这个函数有 4 个参数,buffer 是要写入文件的数据的内存地址;size 是数据类型的大小;n 是要写多少个指定类型的数据;fp 是文件指针。函数的返回值是实际写入文件的数据的个数,有可能等于 n,也可能不等。如果在写文件过程中发生错误,写入操作就会终止,实际写入的数据个数也就会小于 n。
  
例5:将用户输入的一个字符串写入文件中,存放指定大小的数据块。

#include<stdio.h>#define nsize 10void main(){    FILE * fp;  //定义文件指针    char ch[80];    fp=fopen("D://test//file_operate//String.txt","w"); //以写的方式打开文件    if(fp==NULL)    {   // 如果打开不成功,输出错误信息后退出程序        printf("File open Error!");        return; //    }    else    {        printf("Please input the chars\n");        gets(ch);        fwrite(ch,sizeof(char),nsize,fp);        fclose(fp);    }}

这里写图片描述
注意:如果输入的数据,小于nsize,文件中可能会出现一部分乱码。

这里写图片描述 

例6:将用户输入的若干行字符串存放在文件中。

// 将用户输入的若干行字符串存放在文件中#include<stdio.h>#include<string.h>#define nsize 10void main(){    FILE * fp;  //定义文件指针    char ch[80];    fp=fopen("D://test//file_operate//String.txt","w"); //以写的方式打开文件    if(fp==NULL)    {   // 如果打开不成功,输出错误信息后退出程序        printf("File open Error!");        return; //    }    else    {        printf("Please input the chars\n");        while(strlen(gets(ch))>0)        {            fwrite(ch,sizeof(char),nsize,fp);            putc('\n',fp);        }        fclose(fp);    }}

注意:运行时要跳出 while 循环时,不输入字符串而直接回车,这时 ch 的长度为 0,也就是两个连续的回车,可结束循环。

这里写图片描述

5、写二进制文件
  写二进制文件与文本文件的方式类似,不同的是只需要将文件打开方式改为二进制文件打开方式即可,例如“wb”,“ab”等。二进制文件主要用于存放各类二进制数据。
  

0 0
原创粉丝点击