1、File *pf = fopen("文件名","打开方式");

文件名可以加路径,两个"\\"或者一个"/"

打开方式有这么几种:r只读,r+可读可写,w只写,w+可读可写,会覆盖。a追加,a+可读可写。

2、对于windows系统来讲,都可以带上b,因为在windows系统下,还是有这个区分的。

尤其是这个回车转义字符。因为在 windows下面,\r\n代表回车,而在linux/unix系统的文本文件下,\n就代表一个回车。

3、Fopen 和 fclose要成对出现。就跟malloc跟free一样,打开不关,跟申请了不释放一样,都会造成不安全的。所以一定要成对出现。

Fclose(pf);

4、getc() 和 putc() 得到一个 字符,和送出一个字符。

示例用法:

Int main(){
FILE *pf = fopen("a.txt","r");
Char c =;
While( (c=getc(pf))!=EOF){
Printf("%c",c);
}
Printf("\n读取结束\n");
Fclose(pf);
Getchar();
Return ;
}
Int main(){
FILE *pf = fopen("b.txt","w");
Char c[]="lifei";
Int i = ;
For(;i<strlen(c);i++){
Putc(c[i],pf);
}
Printf("写入结束\n");
Fclose(pf);
Getchar();
Return ;
}

5、EOF 的值是-1代表文件结束。函数feof(pf) 用来判定一个文件是否已经到文件结尾了。如果到结尾的话,返回真,否则返回假?

示例用法:

EOF跟上面的第四个点的第一个案例是相同的。

Int main(){
FILE *pf = fopen("a.txt","r");
Char buf[] = {};
while (!feof(pf)){
//如果没有到文件结尾为真就继续执行。
fgets(buf, sizeof(buf), pf);
printf(buf);
}
printf("\n读取结束\n");
fclose(pf);
getchar();
return ;
}

6、有几个函数总是蒙蔽。。。

Printf()

Sprintf();

Fprintf();

总是不知道谁是谁,干吗用的。现在就来厘清一下他们的关系:

Printf();我们接触最多,是用于输出的,通常情况下直接输出到屏幕。当然也可以输出到文件中。

Sprintf(); 是格式化输出,目标是 一个字符串。它比printf就多一个参数,就是最前面的字符数组,用于接收被输出的对象。

Fprintf();是文件输出,前面加上文件目标就可以了。

例程:

#include <stdio.h>

#include <string.h>

#pragma warning(disable:4996)

int main(){

FILE  *pf = fopen("a.txt", "r");

FILE *pfw = fopen("content.txt", "w");

char buf[1024] = { 0 };

char forout[100] = { 0 };

int i = 1;

while (!feof(pf)){

memset(buf, 0, sizeof(buf));//这个 在 string.h 里面

fgets(buf, sizeof(buf), pf);

sprintf(forout, "第 %d 行:%s", i++,buf);//格式化输出到字符数组中。

printf(forout);//输出到显示器

fprintf(pfw,"%s",forout);//输出到文件

}

printf("\n读取结束\n");

printf("写出结束\n");

fclose(pf);

getchar();

return 0;

}

7、因为 fprintf();是打印数据到文件所以结合scanf()是从键盘得到数据,fscanf()就是从文件得到数据。

与fgets()一样,fscanf()也是从键盘上获取数据,不过fgets()可以获取文件结尾的回车符号,fscanf()不能获取结尾的回车换行符号。

示例:

#include <stdio.h>
#pragma warning(disable:4996) int main(){ FILE *pf = fopen("a.txt","r");
char buf[] = { };
while (!feof(pf)){
fscanf(pf, "%s", buf);
printf("%s\n",buf);
}
printf("读取结束");
fclose(pf);
getchar();
return ;
}

8、stat函数

例程:

#include <stdio.h>
#include <sys/stat.h>
#pragma warning(disable:4996) int main(){
//当你知道 只有跑可以追赶上别人的时候,你会不会跑? struct stat st;
stat("main.c", &st);
long len = st.st_size;
printf("文件大小为:%d\n", len); getchar();
return ;
}

打印文件:

#include <stdio.h>
#include <sys/stat.h>
#pragma warning(disable:4996) int main(){
//当你知道 只有跑可以追赶上别人的时候,你会不会跑? struct stat st;
stat("main.c", &st);
long len = st.st_size;
printf("文件大小为:%d\n", len); FILE *pf = fopen("main.c", "r");
char buf[] = { };
while (!feof(pf)){ fgets(buf, sizeof(buf), pf);
printf("%s", buf); } fclose(pf); getchar();
return ;
}
#include <stdio.h>
#pragma warning(disable:4996)
int main(){
FILE *pf = fopen("a.txt", "r");
if (pf == NULL)
return ;
int position = ftell(pf);
printf("文件刚刚打开时候的位置%d\n",position);
char buf[] = { };
char _4out[] = { };
int i = ;
while (!feof(pf)){
printf("currentPosition:%d", ftell(pf));
fgets(buf, sizeof(buf), pf);
sprintf(_4out, "第 %d 行:%s",i++, buf);
printf(_4out);
}
printf("\n第一遍结束,下面第二遍输出原文\n");
printf("值得注意的是:在windows文本文件环境下,一个回车由\\r\\n两个字符组成,所以第一行有八个字节,等到再次读取的时候当前位置是8.\n");
fseek(pf, , SEEK_SET);
while (!feof(pf)){
printf("当前位置:%d", ftell(pf));
fgets(buf, sizeof(buf), pf);
printf(buf);
}
fclose(pf);
getchar();
return ;
}

C语言里的文件函数的更多相关文章

  1. 用matlab脚本语言写M文件函数时用三种方法简单实现实现DFT(离散傅里叶变换)

    %用二重循环实现DFT: function xk=dt_0(xn); %define a function N=length(xn); %caculate the length of the vari ...

  2. C语言样式的文件操作函数

    使用C语言样式的文件操作函数,需要包含stdio.h头文件. 1.打开文件的函数: //oflag的取值为“w”或“r”,分别表示以写或读的方式打开 FILE* fd = fopen(filename ...

  3. c语言里用结构体和指针函数实现面向对象思想

    一.基础研究 观察如下两个程序a.c和b.c: A.c: B.c: 这两个程序都是要实现在屏幕上第10行40列打印一个绿色的字符c: 这两个程序的数据组织方式是一样的,都是使用结构体,而且对共性和个性 ...

  4. c语言中的文件流

    一.打开和关闭文件 #include int main( void ) { FILE* pReadFile = fopen( "E:\\mytest.txt", "r&q ...

  5. 如何在C语言中调用Swift函数

    在Apple官方的<Using Swift with Cocoa and Objectgive-C>一书中详细地介绍了如何在Objective-C中使用Swift的类以及如何在Swift中 ...

  6. c语言的头文件-不是c++类的头文件?

    下面的概述是参考的这篇文章:http://blog.csdn.net/bingxx11/article/details/7771437 c语言编程中也有,也需要头文件, 头文件不只是C++的类才需要! ...

  7. Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解

     上一篇博客我们讲解了如何使用Linux提供的文件操作函数,本文主要讲解使用C语言提供的文件操作的库函数. 1.函数介绍 fopen(打开文件) 相关函数 open,fclose 表头文件 #in ...

  8. Unix/Linux环境C编程新手教程(41) C语言库函数的文件操作具体解释

     上一篇博客我们解说了怎样使用Linux提供的文件操作函数,本文主要解说使用C语言提供的文件操作的库函数. 1.函数介绍 fopen(打开文件) 相关函数 open,fclose 表头文件 #in ...

  9. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

随机推荐

  1. iOS开发UI篇—实现一个私人通讯录小应用【转】

    转一篇学习segue不错的教程 一.该部分主要完成内容 1.界面搭建                        2.功能说明 (1).只有当账号和密码输入框都有值的时候,登录按钮才能交互 (2). ...

  2. 【Kafka入门】Kafka基础结构和知识

    基本概念的总结 在基本的Kafka架构中,producer将消息发布到Kafka话题中,一个Kafka话题通常指消息的类别或者名称,Kafka话题被集群中一个充当Kafka server角色的 bro ...

  3. String类 and StringBuffer类

    1.equals() ==: a)对于原生数据类型来说,比较的是左右两边的值是否相等. b)对于引用类型来说,比较左右两边的引用是否指向同一个对象,或者说左右两边的引用地址是否相同. equals() ...

  4. Android 开发Project中各个目录和文件的介绍

    如上图标号: 存放java文件的文件夹“src”: 由aapt工具根据应用中的资源文件自动生成的R.java文件,以及buildConfiger.java文件,这两个文件最好不要去修改: 存放各种资源 ...

  5. StackOverflow:7个你从未见过的Java问题最佳答案

    本文由码农网 – 李俊英原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 对开发人员来说, StackOverflow就像一个金矿.对具体的问题,它能帮我们找到最有用的答案,并且我们也 ...

  6. 关于JavaScripting API您不知道的5件事

    现在,许多 Java 开发人员都喜欢在 Java 平台中使用脚本语言,但是使用编译到 Java 字节码中的动态语言有时是不可行的.在某些情况中,直接编写一个 Java 应用程序的脚本 部分 或者在一个 ...

  7. 似曾相识的 RecyclerView

    一.常用方法 RecyclerView 与 ListView.GridView 类似,都是可以显示同一种类型 View 的集合的控件. 首先看看最简单的用法,四步走: ①接入 build.gradle ...

  8. 【Away3D代码解读】(二):渲染核心流程(简介、实体对象收集)

    我之前解析过Starling的核心渲染流程,相比Away3D而言Starling真的是足够简单,不过幸运的是两者的渲染流程是大体上相似的:Starling的渲染是每帧调用Starling类中的rend ...

  9. spring源码解析(一)---占位符解析替换

    一.结构类图 ①.PropertyResolver : Environment的顶层接口,主要提供属性检索和解析带占位符的文本.bean.xml配置中的所有占位符例如${}都由它解析 ②.Config ...

  10. <meta 标签的详细使用

    meta是用来在HTML文档中模拟HTTP协议的响应头报文.meta 标签用于网页的<head>与</head>中,meta   标签的用处很多.meta  的属性有两种:na ...