c文件重点总结

c文件重点知识总结

程序文件
数据文件--->分文本文件(ASCII文件)和映像文件(二进制文件) 。区分是用记事本打开后能否看懂。

用二进制文件读写花费时间少,因为用文本文件需要有一个转换的过程,

文件缓冲区;输入文件缓冲区--->磁盘文件中的数据向内存读入时,需要先存到缓冲区,待这个缓冲区装满后一起被送到内存中。
输出文件缓冲区--->内存数据写入磁盘文件中时,同上。

文件信息区:每个被使用的文件,在内存中自动开辟一个文件信息区,用来保存文件的信息。这些信息是存在结构体变量(系统自动生成)中的,
取名为FILE,用文件时用FILE *fp;定义一个指向文件信息区的指针变量,用来使用该文件。也就是说,通过该指针,能够找到与之相关联的文件。
***应该注意,这个指针不是指向外部介质上的数据文件的开头,而是指向文件信息区的开头。

文件函数:
一、打开与关闭文件:
1.fopen(文件名,使用文件方式);
---->成功返回文件信息区的首地址,失败返回NULL;
文件名可以是字符串常量,要用双撇号括起来。如“file1.dat”。可以指定路径,由于\在C语言中是转义字符的前导,用\\来指示路径。
如 ”F:\\aa\\file1.dat“就是说打开F盘的aa文件夹下的file1文件。如果不指定,文件一般会自动放在源程序文件相同的文件夹下(依编译系统而异)。

文件使用方式 基本的有6种。
“r”:只读。为了读取文本文件中的数据而打开文件。如果文件不存在,会返回NULL值。文件位置标记在文件开头。
“w”:只写。为了向文本文件中写入数据以保存。如果文件不存在,会试图自动创建一个你命名的文件。一般都会试图成功。文件位置标记在文件开头。应该注意,如果你要写而打开一个文件,该文件已存在,系统会删除该文件再重新建立一个同名文件,源文件中的数据会丢失。
“a”:追加。向文本文件的末尾追加数据,可写,原数据不消失。文件位置标记在文件数据末尾。
“rb”,“wb”,“ab" 分别对应二进制文件。

2.fclose(文件名)

因为数据是先存在缓冲区里的。所以程序结束,你没close掉文件,缓冲区里的信息会丢失。(虽然大多数编译系统不会出现这种情况,但应该避免)。因而,程序结束之前我们要关掉文件,强制使得缓冲区里的数据保留到文件中。

二、顺序读写数据文件:
1.读写字符
1)fgetc(fp);从fp指向的文件中读入内存一个字符。成功返回该字符,失败返回文件结束标志EOF(-1);
2)fputc(ch,fp):把字符ch写入文件fp中。成功返回该字符,失败返回EOF。

2.读写字符串
1)fgets(str,n,fp);从fp中读取一个长度为n-1的字符串(因为要留一个\0),存放到字符数组str中。成功返回str地址,失败返回NULL;
2)fputs(str,fp); 把字符数组str写到fp中。成功返回0,失败返回非0值。
应该注意,当向文件中写入字符串时,每当写入一个字符串,营房写入一个\n来区分各个字符串。

3.向二进制文件读写一组数据、或者说一块数据:
1、fread(buffer,size,count,fp) 从fp中读入count个size个字节的数据,存储到一个数组中,这个数组的地址是buffer。读成功返回count值。
2、fwrite(buffer,size,count,fp) 把buffer地址指向的数组中的数据,取count个size个字节,存到fp中。成功返回count。
写的一般形式是这样的:
if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
{
printf("file wrute error!\n");
exit(0);
}
feof(fp);检查上一次读写的状态,默认为0,读写成功返回1,else 返回0。

时间: 2024-12-06 14:33:26

c文件重点总结的相关文章

Linux文件重点概念

1.FILE结构体? FILE 是 C语言文件结构定义, 打开文件和文件操作要用到这类结构.可以看成变量类型,用于变量声明.这个是一种数据结构类型,用来表示一个文件的相关信息,如果定义了一个文件指针,就用这个指针来指向某个文件,然后就能使用这个指针对文件来进行操作了.      FILE在"stdio.h"中有如下定义:struct _iobuf {    char *_ptr; //文件输入的下一个位置    int _cnt; //当前缓冲区的相对位置    char *_base

android操作/system路径(移动文件)

原因: 需要隐藏手机下拉框菜单.实际就是删除/system/app/SystemUI.apk文件,即能达到隐藏效果.(不足:会使手机操作系统强制重启) 解决思路: 1.首先获取到/system挂载点所对应的设备文件 2.以root权限将其重新挂载为可读写 3.以root权限删除/system/app/SystemUI.apk文件 重点: 1.挂载/system路径为可读写 mount -o remount /dev/xxx /system 2.程序获取到root权限 su 三个主要函数: 1 输

第五天 文件权限设置acl attr 文件内容排序sort uniq diff

linux root组 不是管理员角色 root组并不是有root权限 useradd -r -m r一般配合m使用 服务器让每个uid最好一样,统一标准化管理 token(uid ,gid,groups) file uid =read write 先看uid再看权限 想看到最新 file uid =read write excute必须重新登录 rwx二进制文件一般读取没有实际意义 ,不是随便一个权限赋予读都有意义读和写一般给文本文件,读权限对二进制文件不受影响 file r看文件内容 w修改

第 五天 文件权限 文件内容排序

linux root组 不是管理员角色 root组并不是有root权限 useradd -r -m r一般配合m使用 文件权限设置 是通过用户登录拿到的令牌中(uid,gid ,groups)与文件本身所有者所属组想对比,识别顺序是从uid 到groups一旦令牌uid=文件所有者,则可以修改文件所有权限,除了修改文件所有者内容,其他都可以修改,如果令牌uid!=文件所有者,则对比令牌gid=文件所属组,如果等于有文件所属组权限,如果令牌gid!=文件所属组,则对比令牌groups=文件所属组,

Linux | chmod命令

一.权限说明 -rw-r–r– :这是某个文件的权限位. 我们从这个权限位开始说明: 第一个横杠:指定文件类型,表示该文件是一个普通文件.(所创建的文件绝大多数都是普通文件或符号链接文件). 除去第一个横杆,一共9个字符,用来设置用户访问文件的权限: rw-:前三位,文件属主可读.写 r–:中间三位,组用户可读 r–:最后三位,其他用户只可读 r 读权限 w 写/更改权限 x 执行该脚本或程序的权限 下面多举几个权限命令: r-- --- --- 文文件属主可读,但不能写或执行 r-- r--

WebService 学习记录

-------------------------------------------PS:这个WebService 服务必须一直开着,关闭就没法访问了 Web Service 教程 一.webservice介绍 1.使用场景 - 不同的移动客户端访问 - 需要访问第三方的项目 2.访问第三方应用的方式 ISO的七层模型 : 物理层.数据链路层.网络层.传输层.表示层.会话层.应用层 - Socket访问 : Socket属于传输层,它是对Tcp/ip协议的实现,包含TCP/UDP,它是所有通信

rsync+inotify实现同步数据

1.rsync man一下sync,就会发现:sync-flush file system buffers,它是一个把缓冲区中的数据同步到文件系统中的一个命令:而rsync其实就是remote rsync,它是一个远程同步工具,兼具cp和scp的功能,rsync命令的使用几乎和scp是一样一样的.rsync是通过超级守护进程xinetd进行触发同步的. 1)优点:与cp和scp相比来说,rsync更快,更安全,支持增量备份.rsync在数据同步的过程中,不像cp一样全部都拷贝,而是先去比对特征码

【RMAN】利用备份片还原数据库(上)

[RMAN]利用备份片还原数据库 群里有同学说把ORACLE_BASE目录删掉了,现在只有备份片和归档文件了,试问如何恢复.坑,,,,咋能这么干,ORACLE_BASE都敢删,,试着恢复了下,并且记录下来,当然软件安装部分就不记录了. 我再说说目前的情况,只有备份片和归档文件,且从文件名称是看不出dbname和dbid的,在这种情况下其实恢复控制文件是很重要的了,但是鬼知道备份片里边是不是有控制文件的备份呢?我们可能碰到的就是这样的情况,只有备份文件,其它的什么都不知道.我们且看这样的情况下如何

第 十 一 天 : 复 习 完 ( 三 )

小Q:和顾客争,你赢了,顾客走了:和同事争,你赢了,团队散了: 和老板争, 你赢了,工作悬了:和朋友争,你赢了,朋友少了: 和爱人争,你赢了,感情淡了.不论和谁争,争赢争输都是输: 只有跟自己争,争赢了,你就赢了:把自己争输了,你也赢了. 复习总结: vim全屏幕编辑器: 安装: yum  install  vim-enhanced   (或 vim 或 vim*) 移动: j 左  k  右  h  上  l  下   数字+空格或方向字母=移动多少 ctrl + b  ctrl + f 翻页