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); }}
例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”等。二进制文件主要用于存放各类二进制数据。
- 29、文件操作--顺序文件的写操作
- 文件的写操作
- 文件操作 写文件
- 打开文件和写文件的操作
- 30、文件操作--顺序文件的读操作
- 文件写操作
- yaffs2写文件操作
- php写文件操作
- JAVA 写文件操作
- java写文件操作
- Qt写文件操作
- 写文件操作
- PLSQL写文件操作
- C++ 写文件操作
- 文件对象-写操作
- Python文件写操作
- 多线程写文件操作
- C#文件操作-写文件
- python交互模式下退格键乱码问题
- Fn+W
- 学习GIT
- IOS开发学习笔记(四)
- 深度神经网络(DNN)模型与前向传播算法
- 29、文件操作--顺序文件的写操作
- 带图片的仿天猫导航栏
- JS 判断特殊字符
- 1 系统编程综述
- android6.0动态获取权限
- 动态规划之乘法游戏
- 哈希查找
- Java多线程基础问题
- [Nginx]实现反向代理(Windows版)