C语言里的文件函数
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语言里的文件函数的更多相关文章
- 用matlab脚本语言写M文件函数时用三种方法简单实现实现DFT(离散傅里叶变换)
%用二重循环实现DFT: function xk=dt_0(xn); %define a function N=length(xn); %caculate the length of the vari ...
- C语言样式的文件操作函数
使用C语言样式的文件操作函数,需要包含stdio.h头文件. 1.打开文件的函数: //oflag的取值为“w”或“r”,分别表示以写或读的方式打开 FILE* fd = fopen(filename ...
- c语言里用结构体和指针函数实现面向对象思想
一.基础研究 观察如下两个程序a.c和b.c: A.c: B.c: 这两个程序都是要实现在屏幕上第10行40列打印一个绿色的字符c: 这两个程序的数据组织方式是一样的,都是使用结构体,而且对共性和个性 ...
- c语言中的文件流
一.打开和关闭文件 #include int main( void ) { FILE* pReadFile = fopen( "E:\\mytest.txt", "r&q ...
- 如何在C语言中调用Swift函数
在Apple官方的<Using Swift with Cocoa and Objectgive-C>一书中详细地介绍了如何在Objective-C中使用Swift的类以及如何在Swift中 ...
- c语言的头文件-不是c++类的头文件?
下面的概述是参考的这篇文章:http://blog.csdn.net/bingxx11/article/details/7771437 c语言编程中也有,也需要头文件, 头文件不只是C++的类才需要! ...
- Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解
上一篇博客我们讲解了如何使用Linux提供的文件操作函数,本文主要讲解使用C语言提供的文件操作的库函数. 1.函数介绍 fopen(打开文件) 相关函数 open,fclose 表头文件 #in ...
- Unix/Linux环境C编程新手教程(41) C语言库函数的文件操作具体解释
上一篇博客我们解说了怎样使用Linux提供的文件操作函数,本文主要解说使用C语言提供的文件操作的库函数. 1.函数介绍 fopen(打开文件) 相关函数 open,fclose 表头文件 #in ...
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
随机推荐
- NGINX(五)模块
nginx模块分为以下几类: NGX_CORE_MODULE //核心模块 NGX_HTTP_MODULE //HTTP处理模块 NGX_EVENT_MODULE //事件处理模块 NGX_MAIL_ ...
- 【暑假】[实用数据结构]UVAlive 4670 Dominating Patterns
UVAlive 4670 Dominating Patterns 题目: Dominating Patterns Time Limit: 3000MS Memory Limit: Unkn ...
- Java学习笔记(1)
封装基本原则之一: 将实例变量标记为private,将getters与setters标记为public,用setters来检查参数并判断是否可以执行: 局部变量与实例变量的区别: 你无需初始实例变量, ...
- 深入理解Linux的系统调用【转】
一. 什么是系统调用 在Linux的世界里,我们经常会遇到系统调用这一术语,所谓系统调用,就是内核提供的.功能十分强大的一系列的函数.这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一 ...
- HDU-1007 Quoit Design 平面最近点对
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007 简单裸题,测测模板,G++速度快了不少,应该是编译的时候对比C++优化了不少.. //STATU ...
- hdu 1597 find the nth digit
find the nth digit Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- Java/Andriod- 使用Eclipse搭建环境
从网上找来的,做了一点小修改,我自己试了一下,1.3步骤我没去做,最后也不影响. 在开始Android开发之旅启动之前,首先要搭建环境,然后创建一个简单的HelloWorld.本文的主题如下: 1.环 ...
- CentOS6.5安装nginx及负载均衡配置
所有的安装包可以去以下地址下载,或者自行去官网下载,下面都有介绍. 所有安装包地址:http://download.csdn.net/detail/carboncomputer/9238037 原文地 ...
- Ms SQL Server 约束和规则
一.SQL约束 约束定义关于列中允许值的规则,是强制完整性的标准机制. 使用约束优先于使用触发器.规则和默认值.查询优化器也使用约束定义生成高性能的查询执行计划. 1:类型 约束的类型一共分三种 域约 ...
- 关于iOS中SQLITE句柄的使用的细节
1.设计思想:给SQLITE进行封装,利用定义的类别实现方法的简洁,以便达到低耦合效果 控制器代码: #import "ViewController.h" #import &quo ...