c语言创建文件存放,C语言文件操作
C语言文件操作
常见硬件设备所对应的文件
文件 硬件设备
stdin 标准输入文件,一般指键盘;scanf()、getchar() 等函数默认从 stdin 获取输入。
stdout 标准输出文件,一般指显示器;printf()、putchar() 等函数默认向 stdout 输出数据。
stderr 标准错误文件,一般指显示器;perror() 等函数默认向 stderr 输出数据(后续会讲到)。
stdprn 标准打印文件,一般指打印机。
文件流
数据从文件复制到内存的过程叫做输入流,从内存保存到文件的过程叫做输出流
文件的操作
操作文件之前必须先打开文件;所谓“打开文件”,就是让程序和文件建立连接的过程
标准输入文件 stdin(表示键盘)、标准输出文件 stdout(表示显示器)、标准错误文件 stderr(表示显示器)是由系统打开的,可直接使用。
打开文件
FILE *fopen(char *filename, char *mode);
filename为文件名(包括文件路径),mode为打开方式,它们都是字符串。
fopen() 会获取文件信息,包括文件名、文件状态、当前读写位置等,并将这些信息保存到一个 FILE 类型的结构体变量中,然后将该变量的地址返回
如果希望接收 fopen() 的返回值,就需要定义一个 FILE 类型的指针
FILE *fp = fopen("demo.txt", "r");
表示以“只读”方式打开当前目录下的 demo.txt 文件,并使 fp 指向该文件,这样就可以通过 fp 来操作 demo.txt 了。fp 通常被称为文件指针
判断文件是否打开成功
打开文件出错时,fopen() 将返回一个空指针,也就是 NULL
FILE *fp;
if( (fp=fopen("D:\\demo.txt","rb") == NULL ){
printf("Fail to open file!\n");
exit(0); //退出程序(结束程序)
}
最基本的文件打开方式有以下几种:
控制读写权限的字符串(必须指明)
打开方式 说明
“r” 以“只读”方式打开文件。只允许读取,不允许写入。文件必须存在,否则打开失败。
“w” 以“写入”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
“a” 以“追加”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。
“r+” 以“读写”方式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。
“w+” 以“写入/更新”方式打开文件,相当于w和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
“a+” 以“追加/更新”方式打开文件,相当于a和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。
控制读写方式的字符串(可以不写)
打开方式 说明
“t” 文本文件。如果不写,默认为"t"。
“b” 二进制文件。
r(read):
读 w(write):
写 a(append):
追加 t(text):
文本文件 b(binary):
二进制文件
+:读和写 关闭文件 fclose(fp);(fp为文件指针)
实例
#include
#include
#define N 100
int main() {
FILE *fp;
char str[N + 1];
//判断文件是否打开失败
if ( (fp = fopen("d:\\demo.txt", "rt")) == NULL ) {
puts("Fail to open file!");
exit(0);
}
//循环读取文件的每一行数据
while( fgets(str, N, fp) != NULL ) {
printf("%s", str);
}
//操作结束后关闭文件
fclose(fp);
return 0;
}
C语言fgetc(读)和fputc(写)函数用法详解(以字符形式读写文件)
int fgetc (FILE *fp); //fp 为文件指针。fgetc() 读取成功时返回读取到的字符,读取到文件末尾或读取失败时返回EOF
#include
int main(){
FILE *fp;
char ch;
//如果文件不存在,给出提示并退出
if( (fp=fopen("D:\\demo.txt","rt")) == NULL ){
puts("Fail to open file!");
exit(0);
}
//每次读取一个字节,直到读取完毕
while( (ch=fgetc(fp)) != EOF ){
putchar(ch);
}
putchar('\n'); //输出换行符
//ferror() 函数用来判断文件操作是否出错
//出错时返回非零值,否则返回零值
if(ferror(fp)){
puts("读取出错");
}else{
puts("读取成功");
}
fclose(fp);
return 0;
}
从键盘输入字符,写入文件
#include
int main(){
FILE *fp;
char ch;
//判断文件是否成功打开
if( (fp=fopen("D:\\demo.txt","wt+")) == NULL ){
puts("Fail to open file!");
exit(0);
}
printf("Input a string:\n");
//每次从键盘读取一个字符并写入文件
while ( (ch=getchar()) != '\n' ){
fputc(ch,fp);
}
fclose(fp);
return 0;
}
C语言fgets(读)和fputs(写)函数的用法详解(以字符串的形式读写文件)
文件操作
示例 一行一行的读取文件
#include
#include
#define N 100
int main(){
FILE *fp;
char str[N+1];
if( (fp=fopen("d:\\demo.txt","rt")) == NULL ){
puts("Fail to open file!");
exit(0);
}
while(fgets(str, N, fp) != NULL){
printf("%s", str);
}
fclose(fp);
return 0;
}
在文件最后追加一个字符串
#include
int main(){
FILE *fp;
char str[102] = {0}, strTemp[100];
if( (fp=fopen("D:\\demo.txt", "at+")) == NULL ){
puts("Fail to open file!");
exit(0);
}
printf("Input a string:");
gets(strTemp);
strcat(str, "\n");
strcat(str, strTemp);
fputs(str, fp);
fclose(fp);
return 0;
}
C语言fread(读)和fwrite(写)的用法详解(以数据块的形式读写文件)
size_t fread ( void *ptr, size_t size, size_t count, FILE *fp );
size_t fwrite ( void * ptr, size_t size, size_t count, FILE *fp );
ptr 为内存区块的指针,它可以是数组、变量、结构体等。fread() 中的 ptr 用来存放读取到的数据,fwrite() 中的 ptr 用来存放要写入的数据。
size:表示每个数据块的字节数。
count:表示要读写的数据块的块数。
fp:表示文件指针。
理论上,每次读写 size*count 个字节的数据。
示例】从键盘输入两个学生数据,写入一个文件中,再读出这两个学生的数据显示在屏幕上。
#include
#define N 2
struct stu{
char name[10]; //姓名
int num; //学号
int age; //年龄
float score; //成绩
}boya[N], boyb[N], *pa, *pb;
int main(){
FILE *fp;
int i;
pa = boya;
pb = boyb;
if( (fp=fopen("d:\\demo.txt", "wb+")) == NULL ){
puts("Fail to open file!");
exit(0);
}
//从键盘输入数据
printf("Input data:\n");
for(i=0; i
scanf("%s %d %d %f",pa->name, &pa->num,&pa->age, &pa->score);
}
//将数组 boya 的数据写入文件
fwrite(boya, sizeof(struct stu), N, fp);
//将文件指针重置到文件开头
rewind(fp);
//从文件读取数据并保存到数据 boyb
fread(boyb, sizeof(struct stu), N, fp);
//输出数组 boyb 中的数据
for(i=0; i
printf("%s %d %d %f\n", pb->name, pb->num, pb->age, pb->score);
}
fclose(fp);
return 0;
}
获取文件大小
//获取文件大小
#include
/// 判断文件是否存在
bool is_exist_file_(std::string&& str_file)
{
struct stat st;
return (0 == stat(str_file.c_str(), &st));
}
int main()
{
std::string str = "F:\\demo.txt";
bool is_exist = is_exist_file_(std::move(str));
if (!is_exist)
return 0;
FILE* pfile = nullptr;
int ret = fopen_s(&pfile, str.c_str(), "rb");
/// 0 = 打开成功,
if (0 == ret)
{
if (pfile)
{
/// 将文件指针移动到文件尾
fseek(pfile, 0, SEEK_END);
unsigned int file_length_bytes = ftell(pfile);
fclose(pfile);
pfile = nullptr;
std::cout << "the length of the file is " << file_length_bytes << "\n";
}
else
{
;/// pfile 文件指针为null
}
}
else
{
;/// 打开失败
}
std::cout << is_exist << "\n";
}
C语言插入、删除、更改文件内容
[https://blog.csdn.net/Neutionwei/article/details/109394920]
标签:fp,文件,str,C语言,FILE,操作,fopen,读取
来源: https://blog.csdn.net/hollp_to/article/details/114628156
c语言创建文件存放,C语言文件操作相关推荐
- c语言创建windows进程,C语言实现在windows服务中新建进程的方法
本文实例讲述了C语言实现在windows服务中新建进程的方法.分享给大家供大家参考.具体如下: 运行环境:visual stdio 2008 文件名:testService.c #include #i ...
- linux node 文件存放目录_Linux文件与目录结构
在了解Linux系统目录结构之前应首先了解最为重要的一点: Linux系统中一切皆文件!!! 目录结构简介 命令与简介之间用":"分割,简介结束用"."表示. ...
- 网页文件是用html语言创建的文本文件,把txt文件变成html网页文件
如果您看过<HTML是什么?--零基础自学网页制作>这篇教程,请按照其中说明创建一个txt文件.具体过程如下: step1:在您方便的磁盘中建立一个文件夹,命名为"零基础自学网页 ...
- C语言创建删不掉的文件夹
上一篇博客写了一个杀不死的进程,现在再写一个删不掉的文件夹(文件同理),所谓删不掉不是真的删不掉而是删掉后马上重新创建.代码如下: #include <stdio.h> #include ...
- c语言创建写入和读取TXT文件数据
下面是一个简单文件读取程序,首先是写数据,将数字0~9写入到data.txt文件中,然后再从data.txt中读取数据,将读到的数据存到数组a[10]中,并且打印到控制台上. 下面是程序: [cpp] ...
- C语言创建指定大小的txt文件
近来需要测试网络的下载速率,自己搭了个服务器,好让客户端可以从服务器下载文件测试下载性能.需要准备些固定大小的文件,例如600k.4M等大小的文件. 思路很简单,C中一个 char类型占 1 byte ...
- 创建用于存放备份还原文件的网络文件夹(DPM配置管理系列七)
请在用于存储的服务器中创建备份还原文件的网络共享文件夹,如下图所示: 转载于:https://blog.51cto.com/tingdongwang/895589
- C语言中低位存放,C语言 大端小端存储解析以及判断方法
当我们在C语言中查看数据在内存中的存储时,我们经常会发现一个很奇怪的现象,什么现象呢? 例如下面这段代码 int main() { int i = 1; return 0; } 数据在内存中的存放方式 ...
- php文件便利,PHP便利文件夹下所有文件,创建压缩包
把所有文件保存在$file_array的数组中,然后对其进行操作,然后压缩文件zip,进行下载. $dir="文件路径"; //这里输入其它路径 //PHP遍历文件夹下所有文件 $ ...
最新文章
- 使用 JQUERY 为文本框增加提示文字
- mysql install语句_mysql8 参考手册--INSTALL COMPONENT语句
- 1000万粉丝女主播一年从未露脸,网友爆出嘴唇照,比腐团儿还好看
- muduo网络库学习(三)定时器TimerQueue的设计
- 订餐系统之Excel批量导入
- php substr_replace 中文乱码,php substr_replace替换字符串一些实例_PHP教程
- C# 页面关联类似模式窗口
- 基于android的交流平台,基于Android的移动学习交流平台的设计与实现
- C++语言基础 —— STL —— 容器与迭代器 —— vector
- Linux管理员常用的组合命令
- vga分辨率与时序配置
- mysql 删除恢复_MySQL之delete 忘加where条件误删除恢复
- javaweb学生竞赛管理系统
- Postgresql默认用户名与密码
- python dataframe如何设置并处理(删除、填充)空值
- wincc脚本打印斑马打印机条码,斑马打印机接口
- 【云计算】CentOS7 上配置Openstack(单机)bug记录
- 余江php,余江通报9起违纪案例,其中这个局竟然有8起
- vue中实现图片下载到本地
- E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
热门文章
- 2019学位计算机模拟试题,2019年成人学位英语测试试卷(一)和试卷(二)
- 如何实现登录互踢 即如何实现当用户登录之后 如果在其他地方再次登录 则这边的用户自动退出系统...
- CLI, CILCLR
- 得了糖尿病,千万不能这么做
- IFE_js_task03
- 《Python编程从入门到实践》_第二章_变量和简单数据类型
- 记忆mySQL增删改查
- 用C语言计算水分子的个数
- 基于 Arduino 高精度简易桌面钟(Oled/DS3231)
- Docker遇到的一些问题