1、用fopen打开文件

该函数的原型为FILE *fopen(const char *filename, const char *mode),第一个参数是文件名,第二个参数是打开文件的模式。

打开文件的模式主要是以下几种:

“r”以文本方式打开文件,只进行读操作

“w”以文本方式打开文件,只进行写操作

“a”以文本方式打开文件,只往其末尾添加内容

“rb”以二进制方式打开文件,只进行读操作

“wb”以二进制方式打开方式,只进行写操作

“ab”以二进制方式打开文件,只往其末尾添加内容

“r+”以文本方式打开文件,既读取其数据,也往文件中写入内容

“r+b”以二进制方式打开文件,既读取其数据,也往文件中写入内容

在对文件进行读写操作前,判断fopen的返回值是否为NULL, 是非常重要的习惯。

FILE *fp = fopen(filename,mode)

if (fp == NULL)

{

  printf("Failed to open file!\n");

  return 0;

}

2、用fclose关闭文件

打开文件后,一定要用fclose函数关闭文件。

3、用fgetc读文件,用fputc写文件

fgetc的函数原型如下:

int fgetc(FILE *stream)

它用于从文件中读取一个字节,返回值即是所读取的字节数。每个字节都被当作一个无
符号的8位(二进制位)数,因此每个被读取字节的取值范围都是0-255。反复调用fgetc函
数可以读取整个文件。如果已经读到文件末尾,无法再读,那么fgetc函数返回EOF(实际上
就是-1)。

fputc函数原形如下:

int fputc(int c, FILE *stream)

它将一个字节写入文件。参数c即是要被写入的字节。虽然c是int类型的,但实际上只
有其低8位才被写入文件。如果写入失败,该函数返回EOF。

 1 #include <stdio.h>
int main(int argc,char * argv[])
{
FILE *fpSrc,*fpDest;
fpSrc = fopen(argv[],"rb");
if (fpSrc == NULL)
{
printf("Failed to open the file\n");
return ;
}
fpDest = fopen(argv[],"wb");
if (fpDest == NULL)
{
fclose(fpSrc);
printf("Failed to open the file\n");
return ;
}
int c;
while((c = fgetc(fpSrc)) != EOF)
{
fputc(c,fpDest);
}
fclose(fpSrc);
fclose(fpDest);
return ;
}

4. 用fgets读文件,用fputs写文件

fgets函数原型如下:

char *fgets(char *s, int n, FILE *stream);

fgets一次从文件中读取一行,包括换行符,放入字符串s中,并且自动加上字符串结尾标志。

参数n代表缓冲区s中最多能容纳多少个字符。

fputs函数原型如下:

int fputs(const char *s, FILE *stream)

它往文件中写入字符串s。

3中的程序可以重写为如下形式:

 #include <stdio.h>
int main(int argc,char * argv[])
{
FILE *fpSrc,*fpDest;
fpSrc = fopen(argv[],"r");
if (fpSrc == NULL)
{
printf("Failed to open the file\n");
return ;
}
fpDest = fopen(argv[],"w");
if (fpDest == NULL)
{
fclose(fpSrc);
printf("Failed to open the file\n");
return ;
}
char szLine[];
while(fgets(szLine,,fpSrc))
{
fputs(szLine,fpDest);
}
fclose(fpSrc);
fclose(fpDest);
return ;
}

C语言文件读写的更多相关文章

  1. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  2. 3,C语言文件读写

    这两天看到一个关于文件读写的题目,索性就把相关内容总结下. C语言文件读写,无非是几个读写函数的应用,fopen(),fread(),fwrite()等,下面简单介绍下. 一.fopen() 函数原型 ...

  3. C语言文件读写命令fprintf和fscanf

    以向文件中读取和写入二维数组为例. 以下是fprintf的使用:向文件中写入10*10的二维数组,数组元素为1~100之间的随机数. #include <stdlib.h> #includ ...

  4. C语言文件读写操作

    C语言实现文件读写,注意区分几个方法: 写入: fwrite() //个人认为这个最好,可是实现写入任何数据类型,任何长度 fputs() //写入一个字符串,字符串长度不能太长,具体的长度未知,但估 ...

  5. C++常用工具库(C语言文件读写,日志库,格式化字符串, 获取可执行文件所在绝对路径等)

    前言 自己常用的工具库, C++ 和C语言实现 使用cmake维护的项目 持续更新..... 提供使用范例, 详见example文件夹 windows使用的VS通过了的编译. Linux(Ubuntu ...

  6. C语言文件读写(结构体文件)

    有时候,我们需要将输入的数据存储起来,这时候就需要用到文件,对于C语言而言,文件的读写有多种方式,下面主要是结构体文件的读写,例如student.dat(第一列是学号,第二列是姓名) xiaoming ...

  7. [知识复习] C语言文件读写

    文件打开 fopen() 返回FILE* 对象,如果打开失败返回NULL,错误代码存入errno中 FILE *fopen( const char * filename, const char * m ...

  8. C 语言 文件读写

    在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之.一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:type ...

  9. C语言文件读写Demo

    CIODemo.c #include <stdio.h> #include <time.h> #define INPUT_BUFFER_SIZE 100 * 1024 int ...

随机推荐

  1. 依賴注入入門——Unity(一)

    參考資料http://blog.csdn.net/m13666368773/article/details/7802126 背景介紹 在设计模式中,尤其是结构型模式很多时候解决的就是对象间的依赖关系, ...

  2. jsp值传到后台Struts2中的action三种方法

    Action接收表单传递过来的参数有3种方法: 如,登陆表单login.jsp: <form action="login" method="post" n ...

  3. ECSHOP在线手册布局参考图--积分商城 exchange_list.dwt

        A.购物车 1,设置方法 程序自动读取购物车的商品数量 2,代码相关 cart.lbi 中 {insert_scripts files='transport.js'} <div clas ...

  4. js中substr,substring,indexOf,lastIndexOf,split用法

    1.substr substr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/off_1.png"; aler ...

  5. iOS开发笔记系列-基础2(类)

    面向对象编程总是离不开类和对象的,Objective-C也不例外,不过Objective-C中的类还有一些自己的独特点. 类的声明和定义 在iOS开发中,类的声明与定义通常都是分开的,类得声明通常存放 ...

  6. UvaLive 6667 Longest Chain (分治求三元组LIS&amp;树状数组)

    题目链接: here 题意: 和hdu4742类似.差别就是一部分三元组是直接给出的.另一部分是用他给的那个函数生成的.还有就是这里的大于是严格的大于a>b必须ax>bx,ay>by ...

  7. C++在使用Qt中SLOT宏须要注意的一个小细节

    大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类假设覆写,在基类指针或者引用来指向子类的时候会实现动态绑定. 但假设指针去调用非虚函数,这个时候会调用C++的静态绑定,去推断当前的指针是 ...

  8. c++简单的ATL COM开发和调用实例(转)

    c++简单的ATL COM开发和调用实例 1.打开VS2010,新建ATL COM 项目,步骤:“文件” -->“新建” -->“项目”,选择“Visual C++” -->“ATL ...

  9. hellogcc -100GDB技巧

    https://github.com/hellogcc/100-gdb-tips/blob/master/README.md

  10. 360开源的类Redis存储系统:Pika

    Pika 是 360 DBA 和基础架构组联合开发的类 Redis 存储系统,完全支持 Redis 协议,用户不需要修改任何代码,就可以将服务迁移至 Pika.有维护 Redis 经验的 DBA 维护 ...