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. 什么是MBeanServer

    什么是MBeanServer MBeanServer是一个包含所有注册MBean的仓库.它是JMX代理层的核心.JMX1.0规范提供一个接口叫 javax.management.MBeanServer ...

  2. 那些跟钱有关的事儿 z

    这是两段朴实的创业笔记,作者是王信文,2009年南京大学本科毕业,2009年9月到2013年3月在腾讯上海的互动娱乐部门工作,2013年3月到现在和几个前同事一起创立了莉莉丝游戏(手游刀塔传奇是他们后 ...

  3. 编程精粹:编写高质量的C语言代码———笔记一

    第一章 假想的编译程序 要记得对空语句进行处理,最好使用NULL使其明显可见 char * strcpy(char* pchTo, char* pchFrom) { char* pchStart = ...

  4. Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库

    前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. ...

  5. gSoap的 “error LNK2001: 无法解析的外部符号 _namespaces”解决方法

    gSoap是C/C++开发webService服务第三方的公开类库. 出现上述错误是因为缺少必要的头文件导致的. 在用wsdl2h生成头文件的时候,一并生成了类似 xx.nsmap 的文件,这个文件实 ...

  6. 简易博客编辑器:玩转document.execCommand命令

    xhEditor是基于jQuery开发的跨平台轻量可视化XHTML编辑器,基于LGPL开源协议发布.今天就把它山寨一下. 上几张图,看看效果: 先做出菜单部分:发现是一张背景图片,所以用图片映射的方法 ...

  7. 组建Windows家庭组

    这里,是必须得针对Windows 7.8.10而言,因为,Windows XP 和 Windows Vista系统没有家庭网络的功能.(比较过时的一些系统了) 1.Windows家庭组的简介 使用家庭 ...

  8. [OC Foundation框架 - 11] NSMutableDictionary

      void dicUse() { NSMutableDictionary *dic = [NSMutableDictionary dictionary]; Student *stu1 = [Stud ...

  9. UITableView性能优化

    关于UITableView的性能优化,网络上也有一些总结.在这里就介绍下我们项目中遇到的问题以及对应的解决方法.相信我们遇到的问题也有一定的普适性,能够作为其他问题的优化方案. Instruments ...

  10. MySql实现远程连接

    MySql实现远程连接 1.进入mysql,创建一个新用户root,密码为root: 格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密 ...