C语言文件操作

发布时间:2018-11-15  栏目:LINUX  评论:0 Comments

同等、读字符函数fgetc

1>

次中第6履以朗诵写文本文件方式打开文件string。程序第13尽由键盘读入一个字符后跻身循环,当读入字符不也回车符时,
则把欠字符写副文件里,然后继续从键盘读入下一样字符。
每输入一个字符,文件之中位置指针向后移动一个字节。写副了,该指针已对文件末。如要把文件开始读来,须把指针移向文件头,
程序第19行rewind函数用于把fp所指文件之里边位置指针移到文件头.第20及25推行用于读出文件中之情节。

举例:

r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写

率先以专业的输入输出谈起~ 

近段复习C语言文件操作,在原文的功底之上总结如下:


文本之读写:

123
+123
-123

  1. 于fgetc函数调用中,读取的公文要是以朗诵或读写方式打开的。
  • 左对齐
  • 兴显示正号
    0 0填充

所谓打开文件,实际上是起家文件的各种关于信息,
并使文件指针指为该文件,以便进行其他操作。

(1)格式输入输出

2.打文本编码的章程来拘禁,文件可分为ASCII码文件以及二进制码文件少栽。

还有不少用处

面前介绍的指向文本之读写方式还是逐一读写,
即读写文件只能从头开始,顺序读写各个数据。但当实质上问题吃经常要求仅仅念写文件被有平等点名的有的。为了缓解者问题而是走文件里的职指针到要读写的职,再展开读写,这种读写称为随机读写。
实现自由读写的严重性是要按照要求移动位置指针,这叫做文件的一贯。移动文件中位置指针的函数主要出少单,即
rewind 函数和fseek函数。
rewind函数前面都多次采用过,其调用形式呢: rewind(文件指针);
它的职能是拿公文里的职指针移到文件首。
脚要介绍fseek函数。
   fseek函数用来走文件之中位置指针,其调用形式吗: fseek(文件指针,位移量,起始点);其中:“文件指针”指向于挪的公文。“位移量”表示移动的字节数,要求各项移量是long型数据,以便在文件长度超过64KB
时莫会见错。当用常量表示位移量时,要求加后缀“L”,“起始点”表示于哪儿开始盘算位移量,规定之起始点有三种植:文件首,当前职与文书尾。
其二代表法如下表
起始点     表示符号    数字代表
──────────────────────────
文件首    SEEK—SET     0
脚下职   SEEK—CUR      1
文件末尾   SEEK—END     2
诸如:fseek(fp,100L,0);其义是将岗位指针移到离开文件首100独字节处。还要证明的凡fseek函数一般用于二进制文件。在文书文件中出于要进行换,故往往计算的位置会起错误。文件的自由读写在动位置指针之后,即可用前面介绍的管一栽读写函数进行读写。由于一般是朗诵写一个数目据块,因此常用fread和fwrite函数。下面用例题来证明文件的肆意读写。
[例8]当学员文件stu list中读来第二个学生的数量。

-123

2>

width或prec               含义
number               最小字符数
*                  下一个参数是字符数
.number          小数点后保留几各项
.*            下一个参数是稍稍数点后的位数
举例:
a = 123.4512;
printf(“9.2%d”,a);
printf(“”,a);
//9代表至少有九独字符,2后面保存的小数数位

fputc函数的职能是管一个字符写副指定的文件被,函数调用的样式呢:
fputc(字符量,文件指针); 其中,待写副的字符量可以是字符常量或变量,例如:fputc(‘a’,fp);其义是管字符a写副fp所指向的公文中。

int main(){
  a = 123;
  printf("-9%d",a);
  printf("+9%d",a);
  a = 123;
  printf("+9%d",a);
  printf("9%d",a);
  return 0;
}

·字符串读写函数:fgets和fputs

 程序为什么用文件?
1>配置
unix用文本 Windows采用注册表二进制文件
2>媒体数据
存档在二进制文件中

文件在拓展读写操作之前如果先打开,使用完毕要关闭。


·数据块读写函数:freed和fwrite


文件检测函数

printf("%[flag][width][.prec][hlL]type");

文本首开头。如需保存老文件内容,希望写副的字符以文件末开始存放,必须为增加方式打开文件。被描写副的文本要未在,则创造该公文。

flag 含义

其次、C语言文件操作(4)

屏幕及打印为*

123.45*


3>hlL修饰符
hh 单个字节
h short
l long
ll long long
L long double

4>type
显示档次
%d 整数路
%f float
%o 八进制
%x 十六进制
e 指数
n 输入输出的个数
例如
printf(“%nd”,1234,&num) //num储存了出口的个数,在这个例子中凡是4
hh char
h short
l long double

(2)文件之操作

1>文件的打开和创建

故此到fopen函数,先押一个事例

FILE *fp = fopen("12.in","r");
if(fp)
{   
    fscanf(fp,"%d",&num);
    fclose(fp);
}
else
{
    //文件打开是失败
}

 

FILE *fopen(char *pname,char *mode)

上述为函数原型,入口参数如下所示

pname:是一个字符指针,它用本着要打开或建的文件的文书名字符串。
mode:是一个对文件处理方式字符串的字符指针。所有可能的文件处理方式如下所示


r 打开才念
r+ 打开读写,从文本开始开始
w 打开才写,文件不有则新建,如果在则清空
w+ 打开读写,文件不设有则新建,如果是则清空
a 打开追加
..x 只新建,如果就有则无法开拓


返回值为状态:
例行返回:被辟文件的文件指针。
异常返回:NULL,表示打开操作不成事。

总结一下

开拓文件的意向是:
(1)分配为打开文件一个FILE
类型的公文结构体变量,并拿有关消息填写入文件结构体变量;
(2)开辟一个缓冲区;
(3)调用操作系统提供的打开文件或者树立新文件功能,打开或确立指定文件;

 2>文件的闭馆

文本之倒闭简单,就是下fclose函数

int fclose(FILE *fp);

入口参数为文件指针,返回值为状态(正常为0,错误呢EOF)

3>文件的读写操作

文本之读写起多函数。

选一个例子,格式化读写。

格式化写

1.函数原型

int fprintf(FILE *fp,char *format,arg_list)

2.成效说明
  将变量表列(arg_list)中的数量,按照format指出的格式,写副由fp指定的文本。fprintf()函数和printf()函数的效应雷同,只是printf()函数是以数据形容副屏幕文件(stdout)。
3.入口参数说明
  fp:这是个公文指针,指出如以数据写入的文书。
  format:这是个因为字符串的字符指针,字符串中含要写来多少的格式,所以该字符串成为格式串。格式串描述的条条框框及printf()函数中的格式串相同。
  arg_list:是要是描绘副文件之变量表列,各变量之间因此逗号分隔。

void main()
{
    char name[10];
    int nAge,nClass;
    long number;
    FILE *fp;
    if((fp=fopen("student.txt","w"))==NULL)
    {
        printf("The file %s can not be opened.\n","student.txt");
        return;
    }
    fscanf(stdin,"%s %d %d %ld",name,&nClass,&nAge,&number);
    fprintf(fp,"%s %5d %4d %8ld",name,nClass,nAge,number);
    fclose(fp);
    if((fp=fopen("student.txt","r"))==NULL)
    {
        printf("The file %s can not be opened.\n","student.txt");
        return;
    }
    fscanf(fp,"%s %d %d %ld",name,&nClass,&nAge,&number);
    printf("name nClass nAge number\n");
    fprintf(stdout,"%-10s%-8d%-6d%-8ld\n",name,nClass,nAge,number);
    fclose(fp);
}

 

下面一篇稿子针对性文件读写做出详细说明http://www.cnblogs.com/likebeta/archive/2012/06/16/2551780.html

 

其三、1,两种文件存取方式(输入,输出方式)
逐存取
直接存取
2,数据的少数种存放形式
文本文件
仲进制文件
13.2文本指针
概念文件类型指针变量的貌似式:
FILE *指南针变量名;
例如:
FILE *fp1,*fp2;
13.3打开文件
在运文件前,需打开文件.在C里用fopen函数打开文件.格式为:
fopen(文件称,文件使用办法);
此函数返回一个指向FILE类型的指针.如:
FILE *fp;
fp=fopen(“file_1″,”r”);
比方调用成功,fp就指向file_1,否则回吗NULL,所以为了保证文件之不易用,要开展测试.采用如下语句:
If((fp=fopen(“file_1″,”r”))==NULL)
{
printf(“Cannot open this file\n”);
exit(0);
}
极致常用的文件使用方法及其含义如下:
1,”r”.为念而打开文本文件.(不存在则失误)
2,”rb”.为念而打开二进制文件.
3,”w”.为写如开辟文本文件.(若未在则新建,反之,则由文本开始位置写,原内容将受覆盖)
4,”wb”.为写如开辟二进制文件.
5,”a”.为在文书尾长数据如果打开文本文件.(若无存,则新建;反之,在本文件后增加)
6,”ab”.为在文书尾长数据而开辟一个二进制文件.
最好常用的文本使用办法及其含义如下:
7,”r+”.为念与描绘如开辟文本文件.(读常,从头开始;在形容多少经常,新数据就覆盖所占有的空间,其后非转移)
8,”rb+”.为念与描写如开辟二进制文件.只是于随后的读写时,可以由位置函数设置读与描绘的开始位置.
9,”w+”.首先成立一个新文件,进行勾勒操作,随后可从头开始读.(若文件是,原内容以合破灭)
10,”wb+”.功能和”w+”同.只是以就的读写时,可以由位置函数设置读与描绘的胚胎位置.
最为常用之公文使用方式及其含义如下:
11,”a+”.功能跟”a”相同;只是当文件尾添加新的数据后,可以从头开始读.
12,”ab+”.功能与”a+”相同;只是以文书尾添加新数据后,可以由位置函数设置开始念的序幕位置.
“rt”     只念打开一个文件文件,只允许读数据
“wt”   只写打开或建一个文件文件,只同意写多少
“at”   追加打开一个文本文件,并于文件末尾写多少
“rb”  只读打开一个二进制文件,只同意读数据
“wb”  只写打开或确立一个二进制文件,只允许写多少
“ab”     追加打开一个二进制文件,并当文书末尾写多少
“rt+”    读写打开一个文书文件,允许读与描写。用fseek确定读写位置,写多少覆盖多少,后面的情保留。因为磁盘空间是接二连三的,所以若不能够在中游插,在中游一旦写副就是埋和写副内容等丰富之那些内容。
“wt+”    读写打开或树立一个文件文件,允许读写
“at+”    读写打开一个文件文件,允许读,或当文件末增加数据
“rb+”    读写打开一个二进制文件,允许读与描绘
“wb+”    读写打开或成立一个二进制文件,允许读与描写
“ab+”     读写打开一个二进制文件,允许读,或在文件末增加数据

屏幕及打印为

·格式化读写函数:fscanf和fprinf

 

 

if((fp=fopen("c:\\file_a","rb"))==NULL)
{
printf("\nerror on open c:\\file_a file!");
getch();
exit(1);
}

文本使用方法       意 义
“rt” 只念打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写多少
“at” 追加打开一个文本文件,并在文件末尾写多少
“rb” 只读打开一个二进制文件,只同意读数据
“wb” 只写打开或建一个二进制文件,只同意写多少
“ab” 追加打开一个二进制文件,并于文书末尾写多少
“rt+” 读写打开一个文本文件,允许读与描绘
“wt+” 读写打开或确立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或当文书末增加数据
“rb+” 读写打开一个二进制文件,允许读与描写
“wb+” 读写打开或树立一个二进制文件,允许读与描绘
“ab+” 读写打开一个二进制文件,允许读,或以文书末增加数据

  
普通文书是赖驻扎留在磁盘或其他表面介质上之一个平稳数据集,可以是缘于文件、目标文件、可执行程序;也得以是均等组要输入处理的初数据,或者是同组输出的结果。对于自文件、目标文件、可执行程序可以称为程序文件,对输入输出数据只是称作多少文件。


 文件stu_list已由例6的程序建立,本程序用随机读来的道读来第二个学生的数据。程序中定义boy为stu类型变量,qq为对boy的指针。以朗诵二进制文件措施打开文件,程序第22行活动文件位置指针。其中的i值为1,表示于文本头起,移动一个stu类型的尺寸,然后还读出的数据就为次单学生的数量。

FILE *fp;
fp=fopen(“file b”,”r”);

当下段先后的意思是,如果回到的指针也空,表示不可知打开C盘根目录下之file_a文件,则受闹提示信息“error
on open c:\
file_afile!”,下一行getch()的法力是打键盘输入一个字符,但非在屏幕及展示。在此,该行的作用是伺机,只有当用户从键盘敲任一键经常,程序才继续执行,
因此用户可应用这个等待时读出错提示。敲键后执行exit(1)退出程序。

1.
吃描写副的文书可以为此写、读写及增加方式打开,用写或读写方式打开一个既在的文书时用免去原有的文本内容,写副字符从

当程序中好据此当下等同音来鉴别是否成功打开文件之干活,并作相应的拍卖。因此常用以下顺序段打开文件:

[例3]拿命执行参数中的前一个文书称标识的文书,复制到晚一个文件称标识的文本被,
如命行中只出一个文书名则把欠文件写到正规输出文件(显示器)中。

一.文件之定义:

#include<stdio.h>
main(int argc,char *argv[])
{
FILE *fp1,*fp2;
char ch;
if(argc==1)
{
printf("have not enter file name press any key to exit");
getch();
exit(0);
}
if((fp1=fopen(argv[1],"rt"))==NULL)
{
printf("Cannot open %s\n",argv[1]);
getch();
exit(1);
}
if(argc==2) fp2=stdout;
else if((fp2=fopen(argv[2],"wt+"))==NULL)
{
printf("Cannot open %s\n",argv[1]);
getch();
exit(1);
}
while((ch=fgetc(fp1))!=EOF)
fputc(ch,fp2);
fclose(fp1);
fclose(fp2);
}

如出一辙、读字符串函数:
fgets函数的机能是打指定的公文中读一个字符串到字符数组中,函数调用的花样吗:
fgets(字符数组名,n,文件指针);其中的n是一个刚整数。表示从文本中读来之字符串不超过
n-1单字符。在读入的最终一个字符后长串了标志’\0’。例如:fgets(str,n,fp);的意义是自从fp所指的文书中读来n-1独字符送入字符数组str中。
[例4]自从string.txt文件中读入一个蕴含10单字符的字符串。

·字符读写函数 :fgetc和fputc

其二含义是以当前目录下打开文件file b,
只同意开展“读”操作,并而fp指向该文件。

1.文本之打开和关概念:

文本要以了,应用关闭文件函数把公文关闭,
以避免文件的数量丢失等误。

当C语言中提供了又文件读写的函数:

如: fclose(fp);
正常完成关闭文件操作时,fclose函数返回值为0。如归非零值则代表出荒唐有。

b.
凡用“r”打开一个文书时,该文件要就有,
且只能于该公文读来。否则报错。

C语言中常用之文书检测函数有以下几独。
一样、文件截止检测函数feof函数调用格式: feof(文件指针);
成效:判断文件是否处在文件了位置,如文件截止,则归回值为1,否则为0。

对fgetc函数的利用产生以下几点说明:

#include<stdio.h>
main()
{
FILE *fp;
char str[11];
if((fp=fopen("c:\\study\\string.txt","rt"))==NULL)
{
printf("Cannot open file strike any keyexit!");
getch();
exit(1);
}
fgets(str,11,fp);
printf("%s",str);
fclose(fp);
}

(2)文件关闭函数fClose:

f.
把一个文件文件读入内存时,要以ASCII码转换成为二进制码,
而把文件为文件方式写副磁盘时,也如管二进制码转换成ASCII码,因此文本文件之读写要消费比多的变时。对二进制文件之宣读写不存在这种转移。

    fopen函数用来开辟一个文书,其调用的一般式吗:文件指针名=fopen(“文件称”,”使用文件方式”);其中,“文件指针名”必须是深受认证也FILE
类型的指针变量,“文件称”是叫打开文件之文书称。
“使用文件措施”是借助文件之档次和操作要求。“文件称”是字符串常量或字符串数组。例如:

 

于C语言中,文件操作都是由库函数来就的。

仲、写字符函数fputc

二.文件之归类:

  1. 在读出n-1个字符之前,如遇上了更换行符或EOF,则读来扫尾。
  2. fgets函数也起归值,其回来回值是字符数组的首地址。
    亚、写字符串函数fputs:
    fputs函数的作用是通往指定的公文写副一个字符串,其调用形式吗:
    fputs(字符串,文件指针) 其中字符串可以是字符串常量,也堪是字符数组名,
    或指针变量,例如:
    fputs(“abcd”,fp);
    其二意义是将字符串“abcd”写副fp所指的文本之中。
    [例10.5]当例2中树立之公文string中多一个字符串。

a.
文件使用方法由r,w,a,t,b,+六独字符拼成,各字符的含义是:

2.
读博字符的结果为堪无往字符变量赋值,例如:fgetc(fp);但是读出的字符不能够保存。

本例程序的力量是起文本中逐条个读博字符,在屏幕上出示。
程序定义了文本指针fp,以朗诵文件文件措施打开文件“homework.c”,
并使fp指向该文件。如打开文件出错,
给出提示并退出程序。程序第12推行先念来一个字符,然后进入循环,
只要读出的字符不是文本截止标志(每个文件末起同收场标志EOF-其值为-1)就拿欠字符显示在屏幕上,再念入下同样字符。每念一浅,文件中的职务指针向后倒一个字符,文件截止时,该指针指向EOF。执行本程序将显得任何文件的情。

次进制文件是以二进制的编码方式来存放文件之。 例如, 数5678的贮存形式为:
00010110 00101110只是占二个字节。二进制文件则为只是在屏幕上展示,
但其情节无法读懂。C系统以拍卖这些文件时,并无分类别,都看成是字符流,按字节进行处理。
输入输出字符流的起来与了结就由程序控制而休为物理符号(如回车符)的支配。
因此也将这种文件称“流式文件”。

C语言文件操作(3)

  本例程序定义了一个构造stu,说明了个别独布局数组boya和
boyb以及个别个结构指针变量pp和qq。pp指向boya,qq指向boyb。程序第16行以朗诵写方式打开二进制文件“stu_list”,输入二只学生数以后,写副该文件中,然后拿公文之中位置指针移到文件首,读来片块学生数后,在屏幕上亮。
格式化读写函数fscanf和fprintf:
  
fscanf函数,fprintf函数与前使用的scanf和printf
函数的职能相似,都是格式化读写函数。两者的界别在fscanf函数和fprintf函数的读写对象不是键盘与显示器,而是磁盘文件。这半独函数的调用格式为:
fscanf(文件指针,格式字符串,输入表列);
fprintf(文件指针,格式字符串,输出表列); 例如:
fscanf(fp,”%d%s”,&i,s);
fprintf(fp,”%d%c”,j,ch);
故而fscanf和fprintf函数也得以做到例6的问题。修改后的次序一旦例10.7所展示。
[例7]

C库文件


#include<stdio.h>
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;
main()
{
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen("stu_list","wb+"))==NULL)
{
printf("Cannot open file strike any keyexit!");
getch();
exit(1);
}
printf("\ninput data\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
pp=boya;
for(i=0;i<2;i++,pp++)
fprintf(fp,"%s %d %d%s\n",pp->name,pp->num,pp->age,pp->addr);
rewind(fp);
for(i=0;i<2;i++,qq++)
fscanf(fp,"%s %d %d%s\\n",qq->name,&qq->num,&qq->age,qq->addr);
printf("\nname\tnumber age addr\n");
qq=boyb;
for(i=0;i<2;i++,qq++)
printf("%s\t%5d%7d%s\n",qq->name,qq->num,qq->age,qq->addr);
fclose(fp);
}

C语言文件操作(2)


#include<stdio.h>
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boy,*qq;
main()
{
FILE *fp;
char ch;
int i=1;
qq=&boy;
if((fp=fopen("stu_list","rb"))==NULL)
{
printf("Cannot open filestrike any key exit!");
getch();
exit(1);
}
rewind(fp);
fseek(fp,i*sizeof(struct stu),0);
fread(qq,sizeof(struct stu),1,fp);
printf("\n\nname\tnumber ageaddr\n");
printf("%s\t%5d %7d%s\n",qq->name,qq->num,qq->age,qq->addr);
}

[例2]由键盘输入一实行字符,写副一个文书,再将欠文件内容念来显示在屏幕及。

又如:

关闭文件则断开指针与公事中的关系,也不怕不准再对拖欠公文进行操作。

d.
若使向一个一度在的公文增加新的音,只能用“a
”方式打开文件。但这该公文要是存的,否则用会出错。

对文件的念与描绘是绝常用之文书操作。

三.文件操作:

对此文本使用方式发生以下几点说明:

   从不同之角度可针对文件作不同之归类。

#include<stdio.h>
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;
main()
{
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen("stu_list","wb+"))==NULL)
{
printf("Cannot open file strike any keyexit!");
getch();
exit(1);
}
printf("\ninput data\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
pp=boya;
fwrite(pp,sizeof(struct stu),2,fp);
rewind(fp);
fread(qq,sizeof(struct stu),2,fp);
printf("\nname:\nnumber:\nage:\naddr:\n");
for(i=0;i<2;i++,qq++)
printf("%s\t%5d%7d%s\n",qq->name,qq->num,qq->age,qq->addr);
fclose(fp);
}

[例1]读入文件homework.c,在屏幕及输出。

暨例6相比,本程序中fscanf和fprintf函数每次只能读写一个构造数组元素,因此使用了循环语词来读写满勤组元素。还要注意指针变量pp,qq由于循环改变了她的价值,因此于次的25跟32实践分别指向它们重新施了数组的首地址。

次、读写文件出错检测函数ferror函数调用格式: ferror(文件指针);
成效:检查文件于于是各种输入输出函数进行读写时是否出错。
如ferror返回值为0代表不错,否则表示出摩擦。

#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("c:\\study\\string.txt","wt+"))==NULL)
{
printf("Can not open file press any key to exit!");
getch();
exit(1);
}
printf("input a string:\n");
ch=getchar();
while (ch!='\n')
{
fputc(ch,fp);
ch=getchar();
}
rewind(fp);
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp);
}

fgetc函数的法力是由指定的文件被读一个字符,函数调用的款型呢:
字符变量=fgetc(文件指针);
例如:ch=fgetc(fp);其含义是自从打开的公文fp中读取一个字符并送入ch中。

·格式化读写函数:fscanf和fprinf

   本程序也带参的main函数。程序中定义了零星个文件指针 fp1
和fp2,分别指为命令执行参数中于闹的文本。如命令执行参数中尚无受有文件称,即运行后输入a.exe则叫出提示信息have
not enter file name press any key to exit。
程序第18行表示一旦单纯让起一个文本称,则只要fp2指于专业输出文件(即显示器)。程序第25执行至28实施用循环语词逐个读出文件1饱受之字符再送及文件2备受。再次运行时,给有了一个文本称(由例2所树立的文本),即输入a.exe
string
则输出为专业输出文件stdout,即在显示器上显示文件内容。第三蹩脚运行,给闹了次独文本称,如输入a.exestring
ok 则拿string中之始末念来,写副到OK之中。

g. 标准输入文件(键盘),标准输出文件(显示器
),标准出错输出(出错信息)是由于系统打开的,可径直行使。

3.
在文件中生一个位置指针。用来对文件的时读写字节。在文书打开时,该指针总是指为文件的第一只字节。使用fgetc
函数后, 该岗位指针将朝着后倒一个字节。
因此而总是数采用fgetc函数,读取多只字符。
应注意文件指针和文件之中的职位指针不是同一磨事。文件指针是乘为全文件之,须以先后中定义说明,只要不又赋值,文件指针的价是不转换的。文件之中的职指针用以指示文件里的脚下读写位置,每念写一蹩脚,该指针均于后移动,它不需要于次中定义说明,而是由于系统自动安装的。

c. 用“w”打开的文书只能望该文件写入。
若打开的公文未有,则因指定的文件称成立该公文,若打开的文书已有,则拿该文件去,重建一个初文件。

·格式化读写函数:fscanf和fprinf

脚介绍流式文件的打开、关闭、读、写、 定位等各种操作。

·字符串读写函数:fgets和fputs

字符串读写函数fgets和fputs

####运用文件的章程共有12种植,下面让闹了其的号子和意义。

概念说明文件指针的相似式吗: FILE* 指针变量标识符;

fclose函数 调用的貌似式是: fclose(文件指针);

C语言文件操作一

  1. 各级写副一个字符,文件里位置指针向后运动一个字节。

  2. fputc函数有一个回值,如写副成功则回写副的字符,
    否则赶回一个EOF。可用之来判断写入是否成功。

那个义是打开C驱动器磁盘的干净目录下的文本file_a,这是一个二进制文件,只同意以二进制方式展开读操作。两独反斜线“\\
”中的第一单象征转义字符,第二只代表根目录。”\\”对于打开磁盘下之公文,要注意少单对倾线之对利用,在象征绝对路径时,每一级目录都设为此”\\”,

脚分别与介绍。使用上述函数都要求包含头文件stdio.h。字符读写函数fgetC和fputC字符读写函数是为字符(字节)为单位之读写函数。
每次可从文本读来要朝向文件写副一个字符。

本例要求在string文件末加写字符串,因此,在次第6实施因为多读写文本文件之法门打开文件string
。然后输入字符串,
并用fputs函数把欠失误写副文件string。在次15执用rewind函数把文件之中位置指针移到文件首。再入循环逐个显示当前文件被的全部内容。
数块读写函数fread和fwrite:
C语言还提供了用来整块数据的朗读写函数。可用来读写一组数据,如一个数组元素,一个结构变量的值等。读数据块函数调用的形似式为: fread(buffer,size,count,fp);
写数据块函数调用的一般式也:fwrite(buffer,size,count,fp); 其中buffer是一个指针,在fread函数中,它象征存放输入数据的首地址。在fwrite函数中,它代表存放输出数据的首地址。
size 代表数据块的字节数。count 表示一旦读写的数额块块数。fp
表示文件指针。
譬如说:fread(fa,4,5,fp);
其意义是从fp所指的文书中,每次读4独字节(一个实数)送入实数组fa中,连续读5涂鸦,即读5单实数到fa中。
[例6]于键盘输入两独学生数,写副一个文件中,再念来立刻半单学生的数展示在屏幕及。

 

2.文件操作函数:

  
ASCII文件也称文本文件,这种文件于磁盘中存放时每个字符对应一个字节,用于存放对应之ASCII码。例如,数5678底储存形式吗:

其三、文件出错标志及文件截止标志置0函数 clearerr函数调用格式:
clearerr(文件指针);
作用:本函数用于破除出错标志与文书了标志,使其啊0值。

对此fputc函数的应用与否如证明几沾:

文件指针:在C语言中用一个指南针变量指向一个文本,这个指针称为文件指针。通过文件指针就不过对她所据的文本进行各种操作。

ASCII码: 0011010100110110 00110111 00111000
十迈入制码: 5 6 7 8 共占4个字节。ASCII码文件可每当屏幕上按照字符显示,
例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的情。
由于是比照字符显示,因此会诵懂文件内容。

本例定义了一个字符数组str共11独字节,在以朗诵文件文件措施打开文件string.txt后,从中读来10只字符送入str数组,在数组最后一个单元内以长’\0’,然后以屏幕上显得输出str数组。输出的十只字符正是例2程序的前十独字符。
本着fgets函数有少触及说明:

C系统提供了长的系统文件,称为库文件,C的库文件分为两类似,一类似是扩大名吧”.h”的文件,称为头文件,在头里的隐含命令中我们既反复施用了。在”.h”文件中蕴藏了常量定义、
类型定义、宏定义、函数原型以及各种编译选择设置等消息。另一样接近是函数库,包括了各种函数的对象代码,供用户在次中调用。通常以先后中调用一个库函数时,要当调用之前包含该函数原型所在的”.h”
文件。
每当附录中叫起了整整库函数
ALLOC.H    说明内存管理函数(分配、释放等)。
ASSERT.H    定义 assert调试宏。
BIOS.H     说明调用IBM—PC ROM BIOS子程序的一一函数。
CONIO.H    说明调用DOS控制台I/O子程序的逐条函数。
CTYPE.H    包含关于字符分类与移的名类信息(如
isalpha和toascii等)。
DIR.H     包含关于目录及途径的结构、宏定义和函数。
DOS.H     定义跟说明MSDOS和8086调用的有的常量和函数。
ERRON.H    定义错误代码的助记符。
FCNTL.H    定义在同open库子程序连接时的号子常量。
FLOAT.H    包含关于浮点运算的一部分参数和函数。
GRAPHICS.H  
说明有关图形功能的逐条函数,图形错误代码的常量定义,正对不同驱动程序的各种颜色值,及函数用到的有的异样结构。
IO.H      包含低级I/O子程序的结构和证明。
LIMIT.H    包含各级环境参数、编译时间范围、数之限等信息。
MATH.H     说明数学运算函数,还必然了 HUGE VAL
宏,说明了matherr和matherr子程序用到之异结构。
MEM.H     说明有些内存操作函数(其中大部分啊当STRING.H中验证)。
PROCESS.H   说明经过管理的依次函数,spawn…和EXEC …函数之构造说明。
SETJMP.H    定义longjmp和setjmp函数用到之jmp buf类型,
说明及时简单单函数。
SHARE.H    定义文件共享函数的参数。
SIGNAL.H    定义SIG[ZZ(Z]
[ZZ)]IGN和SIG[ZZ(Z][ZZ)]DFL常量,说明rajse和signal两个函数。
STDARG.H    定义读函数参数表底偌大。(如vprintf,vscarf函数)。
STDDEF.H    定义有公共数据类型和宏。
STDIO.H    定义Kernighan和Ritchie在Unix System V
中定义的正儿八经及扩展的品种和宏。还定义标准I/O
预定义流:stdin,stdout和stderr,说明 I/O流子程序。
STDLIB.H    说明有常用的子程序:转换子程序、搜索/ 排序子程序等。
STRING.H    说明有些拧操作与内存操作函数。
SYS\\STAT.H   定义在打开和创办文件时用到的一部分号常量。
SYS\\TYPES.H  说明ftime函数和timeb结构。
SYS\\TIME.H   定义时间的门类time[ZZ(Z] [ZZ)]t。
TIME.H    
定义时间转换子程序asctime、localtime和gmtime的构造,ctime、difftime、
gmtime、 localtime和stime用到的色,并提供这些函数的原型。
VALUE.H    定义有关键常量, 包括借助让机器硬件的和为和Unix System
V相匹配而说明的一些常量,包括浮点和双精度值的限定

·字符串读写函数:fgets和fputs

(1)文件打开函数fopen


  
设备文件是依赖与主机相联的各种外部设备,如显示器、打印机、键盘等。在操作系统中,把外部设备也视作是一个文本来拓展田间管理,把它们的输入、输出等同于对磁盘文件之朗诵与描绘。通常将显示器定义为正规输出文件,
一般情形下于屏幕及显示有关消息就是是于专业输出文件输出。如经常应用的printf,putchar函数就是立好像输出。键盘通常给指定专业的输入文件,从键盘上输入就象征从正式输入文件上输入数据,scanf,getchar函数就属这类输入。

例如:fp=fopen(“d:\\study\\file_b”,”r+”);

·数据块读写函数:fread和fwrite


FILE *fp
fp=(“c:\\file_a’,”rb”)

·数据块读写函数:freed和fwrite

#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("c:\\study\\homework.c","rt"))==NULL)
{
printf("Cannot open file press any key to exit!");
getch();
exit(1);
}
ch=fgetc(fp);
while (ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
#include<stdio.h>
main()
{
FILE *fp;
char ch,st[20];
if((fp=fopen("c:\\study\\string.txt","at+"))==NULL)
{
printf("Cannot open file strike any keyexit!");
getch();
exit(1);
}
printf("input a string:\\n");
scanf("%s",st);
fputs(st,fp);
rewind(fp);
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp);
}

e.
以开辟一个文件时,如果差,fopen将赶回一个空指针值NULL。

1.于用户之角度看,文件可分为一般文书和设施文件少种植。

    可用DOS命令type显示OK的情节:例如一个次的main()函数头部形如int
main(int argc, char
*argv[]),编译链接后生成的可执行文件名也a.exe,那么请留心下面的调用:
a.exe abc def
在上头的命令行中,a.exe是要是运行的主次名称,后面的abc和def就是传播程序的片单参数,这点儿单参数就经过argc和argv传入程序,注意这些参数还是字符串。通过地方的调用,在斯程序中,argc=3,a.exe是首先只参数,这个字符串将保存在argv[0]被,abc和def分别是亚同老三单参数,它们分别让保存在argv[1]和argv[2]中。  

 

内部FILE应为非常写,它实质上是由系统定义之一个数据结构, 该组织面临隐含文件称、文件状态和文件时职务等信息。
在编写源程序时不必关心FILE结构的细节。例如:FILE *fp;
表示fp是依靠为FILE结构的指针变量,通过fp
即可寻找存放有文件信息的组织变量,然后以结构变量提供的信息找到该文件,
实施对文本之操作。习惯及也含混不清地管fp称为指向一个文件之指针。

   所谓“文件”是依赖同一组有关数据的不变聚集。
这个数集来一个称,叫做文件称。
平时点到的文本诸如源程序文件、目标文件、可执行文件、库文件
(头文件)等。文件一般是驻留于外表介质(如磁盘等)上的,在运用时才调入内存中来。

C语言文件操作

留下评论

网站地图xml地图