CC++文件操作-文件概念以及文件写入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CC++文件操作-文件概念以及文件写入相关的知识,希望对你有一定的参考价值。
文件用于持久地保存数据
持久:断电后数据不消失。下次加点,可以读取
文件的属性:
文件名
路径
长度(已字节单位计算)
内容
只读/读写
fopen 打开一个文件
fclose 关闭文件
fwrite 写入数据
fread 关闭文件
保存数据到文件的步骤
1) fopen 打开文件
FILE *fopen (const char * filename , const char * mode);
mode 使用wb,写入二进制
2) fwrite 写入数据
size_t fwrite(const void * buf , size_t size , size_t count, FILE * stream);
buf要写入的数据
size总是1
count 长度
stream fopen创建的指针
3) fclose 关闭文件
简单的写入数据例子
#include <stdio.h> int main() { //定义文件名 const char * filename = "c:/aaa.txt"; //打开文件 ,系统会根据指定的路劲和文件名创建文件 FILE * fp = fopen(filename , "wb"); //判断文件指针是否为空来判断文件是否创建成功 if(fp == NULL) { printf("failed to open file!\n"); return -1; } char buf[] = "hello"; //写入数据 fwrite(buf , 1 , 5 , fp); int a = 0x12345678; fwrite(&a,1,4,fp); fclose(fp); return 0; }
写入数据详解
一.写入一个数组的数据
代码如下
#include <stdio.h> #include <string.h> int main() { //定义文件名 const char * filename = "c:/aaa.txt"; //打开文件 ,系统会根据指定的路劲和文件名创建文件 FILE * fp = fopen(filename , "wb"); //判断文件指针是否为空来判断文件是否创建成功 if(fp == NULL) { printf("failed to open file!\n"); return -1; } int buf[4] = {0xA001 , 0xB002, 0xC003 , 0xD004};
for(int i = 0; i < 4 ; i++) { char text[16]; //把int类型数据转换为字符型 sprintf(text , "%d," , buf[i]); fwrite(text,1,strlen(text),fp); } fclose(fp); return 0; }
二. 指定格式保存小数
#include <stdio.h> #include <string.h> int main() { //定义文件名 const char * filename = "c:/aaa.txt"; //打开文件 ,系统会根据指定的路劲和文件名创建文件 FILE * fp = fopen(filename , "wb"); //判断文件指针是否为空来判断文件是否创建成功 if(fp == NULL) { printf("failed to open file!\n"); return -1; } double a = 3 / 4.0; char text[16]; //保留两位小数 sprintf(text,"%.2lf",a); fwrite(text , 1 , strlen(text) , fp); fclose(fp); return 0; }
三.写入字符串
字符串的两种存储方式
char buf [16] = "hello" ;
方式1:按实际有效长度存储(使用string.h里面的strlen函数得到字符串具体长度)
fwrite(buf , 1 , strlen(buf) , fp);
方式2:按固定长度写入
fwrite(buf , 1 , 16 , fp);
(占用空间多)
#include <stdio.h> #include <string.h> int main() { //定义文件名 const char * filename = "c:/aaa.txt"; //打开文件 ,系统会根据指定的路劲和文件名创建文件 FILE * fp = fopen(filename , "wb"); //判断文件指针是否为空来判断文件是否创建成功 if(fp == NULL) { printf("failed to open file!\n"); return -1; } char buf[16] = "hello"; // fwrite(buf,1,strlen(buf),fp);
fwrite(buf,1,16,fp);
return 0;
}
四.写入结构体
#include <stdio.h> #include <string.h> struct Student{ int id ; char gender; char name[16]; }; int main() { //定义文件名 const char * filename = "c:/aaa.txt"; //打开文件 ,系统会根据指定的路劲和文件名创建文件 FILE * fp = fopen(filename , "wb"); //判断文件指针是否为空来判断文件是否创建成功 if(fp == NULL) { printf("failed to open file!\n"); return -1; } Student someone = {61031 , ‘M‘ ,"Noname"}; // fwrite(&someone , 1 , sizeof(someone) , fp); fwrite(&someone.gender,1,1,fp); fwrite(&someone.id,1,4,fp); fwrite(&someone.gender,1,16,fp); fclose(fp); return 0; }
fopen(filename , "wb");
参数为wb时,内容会覆盖
参数为ab时,写入的内容会追加在后面
以上是关于CC++文件操作-文件概念以及文件写入的主要内容,如果未能解决你的问题,请参考以下文章
Python3 关于excel 文件格式xls之读取写入和追加