打开文件

fopen( ) 函数来创建或者打开文件,这个调用会初始化一个FILE 类型的对象。

原型

FILE *fopen( const char * filename, const char * mode );

filename 是字符串,用来命名文件,访问模式 mode 的值可以是下列值中的一个:

模式 描述
r 只能读,从头读。文件不存在会出错。
w 只能写,全部清空再从头开始写。文件不存在则会创建一个新文件。
a 只能写,不清空从后面追加写。文件不存在则会创建一个新文件。
r+ 读写,不清空从头覆盖写。文件不存在会出错。
w+ 读写,全部清空再从头开始写。文件不存在则会创建一个新文件。
a+ 读写,从开头读,从后面追加写。文件不存在则会创建一个新文件。

如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式:

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

关闭文件

fclose( ) 函数用来关闭文件。

原型:

int fclose( FILE *fp );

如果成功关闭文件,fclose( ) 函数返回零,如果关闭文件时发生错误,函数返回 EOF。

写入文件

函数 fputc() 把字符c写入到 fp 所指向的输出流中。写入成功,它会返回写入的字符的ASCII码值,发生错误返回 EOF。

int fputc( int c, FILE* stream );

函数 fputs() 把字符串 s 写入到 fp 所指向的输出流中,不包括\0。写入成功,文件的位置指针会自动后移,返回一个非负值,发生错误返回 EOF。

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

函数 fprintf() 根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误返回一个负值。

int fprintf (FILE* stream, const char*format, [argument]);

实例1:

#include <stdio.h>

main()
{
FILE *fp; fp = fopen("my.txt", "w+");
fprintf(fp, "晚上好!\n");
fputs("我饿了!\n", fp);
fclose(fp);
}

读取文件

fgetc() 函数从 文件中读取一个字符。返回值是读取的字符的ASCII码值,发生错误则返回 EOF。返回值本身是字符的ASCII码值,赋给字符类型变量时,它会自己转换成字符类型。

int fgetc( FILE * fp );

fgets() 原型

char *fgets( char *buf, int n, FILE *fp );

从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区 buf,并在最后追加一个NULL 字符来终止字符串。如果文件中的该行不足n个字符,则读完该行就结束。而如果该行(包括最后一个换行符)的字符数超过n-1,则fgets只返回一个不完整的行,但是,缓冲区buf总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。

fscanf() 函数来从文件中读取字符串,和scanf用法相同。

int fscanf(FILE*stream,constchar*format,[argument...]);

实例2:

#include <stdio.h>

main()
{
FILE *fp;
char buff[]; fp = fopen("my.txt", "r");
fscanf(fp, "%s", buff);
printf("1 : %s\n", buff ); fgets(buff, , (FILE*)fp);
printf("2: %s\n", buff ); fgets(buff, , (FILE*)fp);
printf("3: %s\n", buff );
fclose(fp); }

实例3:

#include<stdio.h>
#include<string.h>
main()
{
FILE *f1;
f1=fopen("before.c","r");
char s[];
/*
while(!feof(f1))//这样文件最后一句会读两次
{
fgets(s,1000,f1);
printf("%s",s);
}
*/
while(!feof(f1))//正确方法
{
memset(s,,sizeof s);
fgets(s,,f1);
printf("%s",s);
}
}

  

C 文件读写1的更多相关文章

  1. 【Win 10 应用开发】文件读写的三种方案

    本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧 ...

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

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

  3. ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...

  4. Android 文件读写

    一.分类 文件读写作为Android四大数据存储方式之一,又分为内部存储和外部存储两种: (1)内部存储(Internal storage): 总是可用. 文件默认情况存储在/data/data/包名 ...

  5. python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

  6. 【Python】[IO编程]文件读写,StringIO和BytesIO,操作文件和目录,序列化

    IO在计算机中指Input/Output,也就是输入和输出. 1.文件读写,1,读文件[使用Python内置函数,open,传入文件名标示符] >>> f = open('/User ...

  7. [转]Android - 文件读写操作 总结

     转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...

  8. Windows Phone 八、文件读写IO

    文件存储的类型 •本地应用文件: •ApplicationData.Current.LocalFolder: •漫游应用文件: •ApplicationData.Current.RoamingFold ...

  9. Python之文件读写

    本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...

  10. JAVA之IO文件读写

    IO概述:                                                          IO(Input output)流 作用:IO流用来处理设备之间的数据传输 ...

随机推荐

  1. Centos7网络监控

    EPEL是企业版 Linux 附加软件包的简称,EPEL是一个由Fedora特别兴趣小组创建.维护并管理的,针对 红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS.Scientif ...

  2. java 15-1 Collection集合的概述以及小功能介绍

     集合的由来:  我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储.  而要想存储多个对象,就不能是一个基本的变量,而应 ...

  3. Git技巧总结分享

    接触Git有很长一段时间了,从最初的不懂到逐渐熟悉运用,相比于SVN,更热衷于Git这一款强大的版本控制工具. 废话不多说,下面对Git做了一些技巧总结,在此分享下,希望能帮助到一些喜欢Git的朋友们 ...

  4. javascript设置网页刷新或者重新加载后滚动条的位置不变

    有个同事说再javascript中你可以做任何你想做的事情,当时觉得不以为然,今天遇到个问题,就是页面重新加载后总是回到页面的顶部,如果客户只想看到他想看到的部分是怎么变化的,这个体验就好了.原本想象 ...

  5. oracle用sqlplus创建新用户,不是plsql developer

    1.sqlplus /nolog 2.conn /as sysdba 3.alter user system identified by "123456"; 4.alter use ...

  6. readLine读取socket流的时候产生了阻塞

    BufferedReader的readLine方法,只要读到流结束或者流关闭,就会返回null 在读取文件的时候,文件结尾就是流的结尾,但对于Socket而言不是的.不能认为流中数据读完了就是流的结尾 ...

  7. 【Windows phone 8】欢迎引导页面02

    [目标]前一篇文章已经实现了图片的切换,这里需要限制pivot的循环滚动. [思路]通过手势事件,对第一张,最后一张图片处加以限制 [前台] 在pivot处加上 <toolkit:Gesture ...

  8. 【每日学习】Apache重写未开启,导致The requested URL /xxxx.html was not found on this server

    今天把项目环境从集成换成独立的,全部搭建好后,网站主页www.xxx.com能打开,但一涉及到跳转,带参数,比如 www.xxx.com/xxx/xxx.html 就会报错 The requested ...

  9. GridView自定义分页

    CSS样式 首先把CSS样式代码粘贴过来: .gv { border: 1px solid #D7D7D7; font-size:12px; text-align:center; } .gvHeade ...

  10. Zxing二维码重复扫描,不退出。

    扫描条码,把手机实现类似超市扫描枪之类的连续扫描. private void continuePreview(){ SurfaceView surfaceView = (SurfaceView) fi ...