C语言文件操作

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


ASCII码: 0011010100110110 00110111 00111000
十前行制码: 5 6 7 8 共占4单字节。ASCII码文件可于屏幕及按照字符显示,
例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。
由于是准字符显示,因此会诵懂文件内容。

屏幕及打印为*

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. 当fgetc函数调用中,读取的公文要是坐朗诵或读写方式打开的。

123
+123
-123

二.文本的分类:

-123

2>

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

1.
被形容副的文本可以就此写、读写及多方式打开,用写或读写方式打开一个已在的文本时将辟原有的公文内容,写副字符从

再有许多用途

又如:

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

本例程序的效用是于文本中逐一个读博字符,在屏幕上亮。
程序定义了文本指针fp,以朗诵文件文件措施打开文件“homework.c”,
并使fp指向该公文。如打开文件出错,
给有提示并退程序。程序第12执行先念来一个字符,然后上循环,
只要读出的字符不是文件截止标志(每个文件末起同样得了标志EOF-其值为-1)就把该字符显示在屏幕及,再念入下一致字符。每诵一涂鸦,文件里的职指针向后走一个字符,文件了时,该指针指向EOF。执行仍程序用显得整个文件之始末。

flag 含义

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


文件首初步。如需要保留原有文件内容,希望写副的字符以文件末初步存放,必须盖长方式打开文件。被勾勒副的文件要未存在,则创造该文件。

屏幕上打印为

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

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

1.文件之开拓和关概念:

先是以正规化的输入输出谈起~ 


举例:

脚分别赋予介绍。使用上述函数都要求涵盖头文件stdio.h。字符读写函数fgetC和fputC字符读写函数是坐字符(字节)为单位的朗读写函数。
每次可自从文本读来或向文件写副一个字符。

1>

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

(1)格式输入输出

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


#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);
}
  • 左对齐
  • 许显示正号
    0 0填充

文本于进行读写操作之前如果先期开辟,使用完毕要关门。

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

2.由文本编码的法来拘禁,文件可分为ASCII码文件和二进制码文件少种。

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

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

关闭文件则断开指针与公事里的沟通,也就禁止再指向拖欠公文进行操作。

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

d.
若使奔一个已是的文本增加新的信息,只能用“a
”方式打开文件。但这时该公文要是是的,否则用会出错。

g. 标准输入文件(键盘),标准输出文件(显示器
),标准出错输出(出错信息)是由网打开的,可一直采用。

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

  本例程序定义了一个组织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]

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

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

其次进制文件是仍二进制的编码方式来存放在文件之。 例如, 数5678的积存形式也:
00010110 00101110仅仅占二单字节。二进制文件则为可是于屏幕及显得,
但其情节无法读懂。C系统以处理这些文件时,并无区分类别,都作是字符流,按字节进行处理。
输入输出字符流的开始与了结就出于程序控制而无为物理符号(如回车符)的控制。
因此也将这种文件称“流式文件”。

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

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

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

 

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

####利用文件的艺术共有12种植,下面让来了其的号子和含义。

c. 用“w”打开的文本只能往该文件写入。
若打开的公文未存,则坐指定的文件称树拖欠公文,若打开的文书就有,则拿欠文件去,重建一个初文件。

与例6相比,本程序中fscanf和fprintf函数每次只能读写一个结构数组元素,因此下了循环语句子来读写尽累组元素。还要小心指针变量pp,qq由于循环改变了它的价,因此当先后的25与32尽分别针对其还给了累组的首地址。

#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);
}

立即段先后的义是,如果回去的指针也空,表示未可知打开C盘根目录下之file_a文件,则于起提示信息“error
on open c:\
file_afile!”,下一行getch()的效应是从键盘输入一个字符,但不在屏幕上显得。在这边,该行的图是等,只有当用户从键盘敲任一键时不时,程序才继续执行,
因此用户可下这等待时读书出错提示。敲键后执行exit(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]中。  

2.文件操作函数:

  
ASCII文件呢叫做文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的囤形式吗:

C语言文件操作一

 

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

#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);
}

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

   从不同之角度可对文本作不同的分类。

#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);
}

本例要求以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]自键盘输入两只学生数,写副一个文件被,再念来立刻半个学生的数量显示在屏幕上。

C库文件

对文本使用方法有以下几点说明:

同等、读字符函数fgetc

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

于先后中得为此这同一信来甄别是否好打开文件的劳作,并作相应的处理。因此常用以下顺序段打开文件:

#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);
}

文本要采取完,应用关闭文件函数把文件关闭,
以避免文件之多少丢失等错误。

该含义是打开C驱动器磁盘的彻底目录下的文件file_a,这是一个二进制文件,只同意以二进制方式进行读操作。两单反斜线“\\
”中之第一独象征转义字符,第二独象征根目录。”\\”对于打开磁盘下之文书,要留心少只对歪线的科学用,在代表绝对路径时,每一级目录都如因此”\\”,

文件检测函数

#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);
}
#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);
}

对fputc函数的下也如验证几点:

[例2]自键盘输入一尽字符,写副一个文本,再管欠文件内容念来显示在屏幕及。

同样、读字符串函数:
fgets函数的作用是从指定的文件被读一个字符串到字符数组中,函数调用的花样呢:
fgets(字符数组名,n,文件指针);其中的n是一个刚好整数。表示从文本被读来之字符串不超过
n-1只字符。在读入的终极一个字符后增长串了标志’\0’。例如:fgets(str,n,fp);的义是打fp所指的文本被读来n-1个字符送入字符数组str中。
[例4]打string.txt文件被读入一个涵盖10只字符的字符串。

(1)文件打开函数fopen

C语言文件操作(3)

   本程序也带参的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之中。

 

一.文件之定义:

3.
每当文书之中有一个职位指针。用来针对文件之眼前读写字节。在文书打开时,该指针总是指为文件之首先只字节。使用fgetc
函数后, 该岗位指针将通往后倒一个字节。
因此而连续数行使fgetc函数,读取多只字符。
应注意文件指针和文件之中的岗位指针不是同扭转事。文件指针是依为全体文件的,须以先后中定义说明,只要不又赋值,文件指针的价是休变换的。文件之中的职务指针用以指示文件里的时读写位置,每念写一不善,该指针均于后倒,它不需要在程序中定义说明,而是由网活动安装的。

先后中第6实践因为朗诵写文本文件措施打开文件string。程序第13执于键盘读入一个字符后入循环,当读入字符不也回车符时,
则把欠字符写副文件里,然后继续由键盘读入下一样字符。
每输入一个字符,文件之中位置指针向后动一个字节。写副了,该指针已对文件末。如一旦将公文开始读来,须把指针移向文件头,
程序第19行rewind函数用于把fp所指文件的里边位置指针移到文件头.第20暨25行用于读出文件被的情。

·字符读写函数 :fgetc和fputc

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

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

次、读写文件出错检测函数ferror函数调用格式: ferror(文件指针);
作用:检查文件在就此各种输入输出函数进行读写时是否出错。
如ferror返回值为0意味着不错,否则表示来错。

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


彼义是当当前目录下开辟文件file b,
只同意开展“读”操作,并使fp指向该文件。

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

(2)文件关闭函数fClose:

  1. 诸写副一个字符,文件之中位置指针向后动一个字节。

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

C语言文件操作

  1. 于读出n-1独字符之前,如遇上了转移行符或EOF,则读来了。
  2. fgets函数也有返值,其回来回值是字符数组的首地址。
    亚、写字符串函数fputs:
    fputs函数的效能是向指定的公文写副一个字符串,其调用形式吗:
    fputs(字符串,文件指针) 其中字符串可以是字符串常量,也堪是字符数组名,
    或指针变量,例如:
    fputs(“abcd”,fp);
    夫意义是将字符串“abcd”写副fp所指的文本之中。
    [例10.5]以例2中确立之公文string中长一个字符串。

fgetc函数的效用是于指定的公文中读一个字符,函数调用的款式吗:
字符变量=fgetc(文件指针);
例如:ch=fgetc(fp);其意思是自打开的公文fp中读取一个字符并送入ch中。

[例3]管命执行参数中的面前一个文件称标识的公文,复制到后一个文书称标识的文书中,
如命令行中只出一个文件名则把该公文写及专业输出文件(显示器)中。

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

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

文本之读写:

老三、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+”     读写打开一个二进制文件,允许读,或在文件末增加数据

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

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

三.文书操作:

 

眼前介绍的指向文本之读写方式都是逐一读写,
即读写文件只能从头开始,顺序读写各个数据。但当骨子里问题遭常常要求仅仅念写文件中之一平等点名的局部。为了解决这题目而是走文件中的位置指针到需要读写的位置,再开展读写,这种读写称为随机读写。
实现自由读写的重中之重是只要按部就班要求移动位置指针,这叫做文件的固定。移动文件中位置指针的函数主要出少数独,即
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中读来第二个学生的数据。

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

  
普通文书是依靠驻扎留在磁盘或其它表面介质上之一个一成不变数据集,可以是出自文件、目标文件、可执行程序;也得是一样组要输入处理的固有数据,或者是一律组输出的结果。对于来文件、目标文件、可执行程序可以叫做程序文件,对输入输出数据而称作多少文件。

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

中间FILE应为深写,它其实是由于系统定义之一个数据结构, 该组织面临寓文件称、文件状态及文书时职务等信息。
在编写源程序时不必关心FILE结构的细节。例如:FILE *fp;
表示fp是指为FILE结构的指针变量,通过fp
即可寻找存放有文件信息的组织变量,然后按结构变量提供的音找到该文件,
实施对文件之操作。习惯及呢含糊地管fp称为指向一个文本的指针。

C语言文件操作(2)

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



 文件stu_list已由例6的先后建立,本程序用随机读来之主意读来第二个学生的数码。程序中定义boy为stu类型变量,qq为对boy的指针。以朗诵二进制文件方式打开文件,程序第22尽移动文件位置指针。其中的i值为1,表示于文本头开始,移动一个stu类型的长,然后重新读出的数目就是为第二独学生的数码。

#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系统提供了增长的系统文件,称为库文件,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相兼容而说明的片段常量,包括浮点和双精度值的限定

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

本着文件的朗读与描写是极其常用之公文操作。

仲、C语言文件操作(4)

1.打用户的角度看,文件可分为一般文书以及装备文件少种植。

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

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

字符串读写函数fgets和fputs

 

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

其次、写字符函数fputc

本例定义了一个字符数组str共11只字节,在为朗诵文件文件措施打开文件string.txt后,从中读来10单字符送入str数组,在多次组最终一个单元内将丰富’\0’,然后于屏幕及亮输出str数组。输出的十单字符正是例2程序的先头十只字符。
对fgets函数有半点沾说明:

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

fputc函数的法力是将一个字符写副指定的文本被,函数调用的款型为:
fputc(字符量,文件指针); 其中,待写副的字符量可以是字符常量或变量,例如:fputc(‘a’,fp);其意思是管字符a写副fp所指向的公文中。

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



    fopen函数用来开辟一个文本,其调用的形似式呢:文件指针名=fopen(“文件称”,”使用文件措施”);其中,“文件指针名”必须是被证明呢FILE
类型的指针变量,“文件称”是叫打开文件的文本称。
“使用文件方式”是凭借文件之档次及操作要求。“文件称”是字符串常量或字符串数组。例如:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图