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. IAR 编译错解决Error[e16]: Segment NEAR_Z (size: 0x16d align: 0) is too long for segment definition. At least 0x83 more bytes needed.

    Error[e16]: Segment NEAR_Z (size: 0x16d align: 0) is too long for segment definition. At least 0x83 ...

  2. 7个改变世界的Java项目

    Java的开源生态系统是强大而健康的,这是我们(Oreilly)创建OSCON Java(Open Source Convention Java)的主要原因之一.在过去10年中,一些项目已经被广泛接受 ...

  3. CentOS6 配置

    1.CentOS6 Minimal 安装的情况下,默认网卡不启动,并且默认设置了依赖 NetworkManager 的选项.又因为 Minimal 安装并不会安装系统默认提供的网络管理工具  Netw ...

  4. VB二进制文件读写

    数组存取 存数组 Private Sub Command2_Click() Dim fileNumber As Integer Dim S9 As String Dim k As Integer Di ...

  5. discuz!版本号信息改动步骤

    建完网站后,就到了改动discuz! 论坛的步骤了,,将其改动为自己喜欢的样子.是非常有意思的,废话不多说了.以下给大家介绍改动的方法. 1.[改动后台-首页的版权]打开ftp.连接网站,进入到:/f ...

  6. Sublime Text 3 安装插件管理 Package Control

    自动安装: 1.通过快捷键 ctrl+` 或者 View > Show Console 菜单打开控制台 2.粘贴对应版本的代码后回车安装 适用于 Sublime Text 3: import   ...

  7. Aizu 2309 Sleeping Time DFS

    Sleeping Time Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...

  8. android131 360 03 输入密码

    package com.itheima52.mobilesafe.activity; import android.app.Activity; import android.app.AlertDial ...

  9. linux-insides-cn-BOOK

    https://www.gitbook.com/book/xinqiu/linux-insides-cn/details https://www.gitbook.com/book/looly/elas ...

  10. C#_IComparer实例 - 实现ID或者yearOfscv排序

    调用LIST的Sort的时候会调用IComparer的默认实现,quicksort会调用每个元素的CompareTo的IComparable实现 using System; using System. ...