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. mac远程连接 win8

    首先 打开组策略 .windows8 下 按win+R 可以唤出运行,输入[gpedit.msc]按下 回车键 选择[计算机配置]>[管理模板]>[Windows组件]>[远程桌面服 ...

  2. NOIP2006 2k进制数

    2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换 ...

  3. Node与Express开发 坑1

    添加 app.set('views', __dirname + '/views') 修改 app.use(express.static(__dirname + '/public')); express ...

  4. 关于硬盘和几种RAID

    1 硬盘的基本工作原理 1.1 硬盘部件结构图 1.2 主要参数术语解释 磁头:在与硬盘交换数据的过程 中,读操作远远快于写操作,硬盘厂商开发一种读/写分离磁头. 转速(Rotationl Speed ...

  5. 【noip2007】树网的核

    题解: 首先我们要知道一个性质:如果有多条直径 这个核不论在哪条直径上 答案都是一样的 这样我们就可以随便找一条直径 在这条直径上枚举核的位置 并且dfs预处理maxlon[i] (i在直径上) 表示 ...

  6. POJ2411 - Mondriaan's Dream(状态压缩DP)

    题目大意 给定一个N*M大小的地板,要求你用1*2大小的砖块把地板铺满,问你有多少种方案? 题解 刚开始时看的是挑战程序设计竞赛上的关于铺砖块问题的讲解,研究一两天楞是没明白它代码是怎么写的,智商捉急 ...

  7. Unity3D实现简单的抽奖程序

    下面是具体的代码,注意,我这里用到了NGUI这个插件.大概的原理很简单,就用了2张图片Sprite,同时向下移动,当上面一张图片移动到下面一张图片原来的位置时,就把这2张图片向上移到初始的位置.这时, ...

  8. 教程-关于Owner和Parent的区别

    Parent属性是指构件的包容器,构件只能在此范围内显示和移动 Owner属性是指构件的所有者,它负责构件的创建和释放.

  9. Azure 云服务中的实例端点

    Azure云服务(cloud Servive)中有三种端点类型(endpoint type):输入端点(input);内部端点(internal);实例端点(InstanceInput) 1.输入端点 ...

  10. 编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。

    package car; public class Vehicle { //定义成员变量 private int wheels; private double weight; public int g ...