菜单

C语言文件操作

2018年11月16日 - LINUX

 

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

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

123
+123
-123

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

-123

2>

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

本例要求于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]起键盘输入两个学生数量,写副一个文本中,再念来立即有限独学生的数目展示在屏幕及。

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

当下段先后的义是,如果回去的指针也空,表示未能够打开C盘根目录下的file_a文件,则叫起提示信息“error
on open c:\
file_afile!”,下一行getch()的法力是由键盘输入一个字符,但不以屏幕上显得。在这里,该行的意向是待,只有当用户从键盘敲任一键时时,程序才继续执行,
因此用户可运这等待时读出错提示。敲键后执行exit(1)退出程序。

再有很多用

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


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

举例:

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

同一、读字符串函数:
fgets函数的法力是自从指定的文件中读一个字符串到字符数组中,函数调用的款型为:
fgets(字符数组名,n,文件指针);其中的n是一个刚刚整数。表示从文本中读来之字符串不超
n-1独字符。在读入的末段一个字符后增长串了标志’\0’。例如:fgets(str,n,fp);的含义是打fp所指的文件被读来n-1只字符送入字符数组str中。
[例4]自从string.txt文件中读入一个富含10个字符的字符串。

1>

文本于拓展读写操作之前若先开辟,使用完要关。


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

屏幕及打印为

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

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

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

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

  
普通文书是凭借驻扎留于磁盘或另表面介质上之一个平稳数据集,可以是自文件、目标文件、可执行程序;也得以是同一组用输入处理的初数据,或者是一律组输出的结果。对于自文件、目标文件、可执行程序可以叫做程序文件,对输入输出数据只是称作多少文件。

屏幕上打印为*

123.45*


3>hlL修饰符
hh 单manbetx网页手机登录版个字节
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

 

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


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

flag 含义

本例定义了一个字符数组str共11单字节,在坐朗诵文件文件方式打开文件string.txt后,从中读来10独字符送入str数组,在三番五次组最后一个单元内将助长’\0’,然后于屏幕及出示输出str数组。输出的十单字符正是例2程序的面前十只字符。
本着fgets函数有少接触说明:

(1)格式输入输出

#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

字符串读写函数fgets和fputs

  1. 当读出n-1单字符之前,如遇上了变行符或EOF,则读来了结。
  2. fgets函数也发归值,其返回回值是字符数组的首地址。
    次、写字符串函数fputs:
    fputs函数的机能是奔指定的文书写副一个字符串,其调用形式也:
    fputs(字符串,文件指针) 其中字符串可以是字符串常量,也得是字符数组名,
    或指针变量,例如:
    fputs(“abcd”,fp);
    那个含义是把字符串“abcd”写副fp所指的文书中。
    [例10.5]于例2中树立之公文string中益一个字符串。

####采取文件之方法共有12种植,下面为闹了它们的标记和意义。

每当次中可为此这无异于音讯来辨别是否做到打开文件的做事,并作相应的拍卖。因此常用以下顺序段打开文件:

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

一.文件的概念:

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

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

文本检测函数

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

 

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中读来第二只学生的多少。

3.
每当文书中生一个职位指针。用来针对文件的当下读写字节。在文书打开时,该指针总是指为文件之第一只字节。使用fgetc
函数后, 该岗位指针将朝后运动一个字节。
因此而连数采用fgetc函数,读取多只字符。
应注意文件指针和文件中的职位指针不是相同拨事。文件指针是靠于一切文件之,须以先后中定义说明,只要非还赋值,文件指针的价是勿转移的。文件之中的职指针用以指示文件里的眼前读写位置,每念写一涂鸦,该指针均向后动,它不欲于次中定义说明,而是由系统自动安装的。


  
设备文件是恃与主机相联的各种外部设备,如显示器、打印机、键盘等。在操作系统中,把外部设备也作是一个文本来拓展田间管理,把它的输入、输出等同于对磁盘文件之宣读与描写。通常将显示器定义也标准输出文件,
一般情形下于屏幕上显示有关信息就是通往专业输出文件输出。如经常用的printf,putchar函数就是这好像输出。键盘通常被指定专业的输入文件,从键盘上输入就意味着从业内输入文件上输入数据,scanf,getchar函数就属这好像输入。

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

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

e.
以打开一个文本时,如果差,fopen将回到一个空指针值NULL。

  1. 在fgetc函数调用中,读取的公文要是以朗诵或读写方式打开的。

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相兼容而说明的一部分常量,包括浮点和双精度值的限定

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

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

那个意义是打开C驱动器磁盘的清目录下的文本file_a,这是一个二进制文件,只允许以二进制方式进行读操作。两独反斜线“\\
”中之首先单象征转义字符,第二单代表根目录。”\\”对于打开磁盘下之文件,要专注少单对侧线之不利采取,在表示绝对路径时,每一级目录都使就此”\\”,

C语言文件操作(2)

C语言文件操作一

文本首始。如要保存原来文件内容,希望写副的字符以文件末初步存放,必须盖长方式打开文件。被描绘副的文书要未有,则开创该文件。

C语言文件操作

本例程序的效应是自从文本被各个个读博字符,在屏幕上亮。
程序定义了文件指针fp,以朗诵文件文件方式打开文件“homework.c”,
并使fp指向该公文。如打开文件出错,
给有提示并脱离程序。程序第12执行先念来一个字符,然后上循环,
只要读出的字符不是文件截止标志(每个文件末起同说尽标志EOF-其值为-1)就管欠字符显示在屏幕及,再念入下一样字符。每诵一破,文件之中的职指针向后移动一个字符,文件了时,该指针指向EOF。执行准程序用显示所有文件之情节。

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

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

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

二.文件的分类:

#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.文书操作函数:

1.文本的开辟和关概念:

于C语言中提供了强文本读写的函数:

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


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

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

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

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

fgetc函数的功用是从指定的文本被读一个字符,函数调用的款型吗:
字符变量=fgetc(文件指针);
例如:ch=fgetc(fp);其义是起打开的文本fp中读取一个字符并送入ch中。


对于fputc函数的行使啊要是证实几碰:

(1)文件打开函数fopen

暨例6相比,本程序中fscanf和fprintf函数每次只能读写一个布局数组元素,因此用了循环语句来读写满频组元素。还要注意指针变量pp,qq由于循环改变了它们的价,因此于次的25及32执分别指向她还给了往往组的首地址。

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

关文件则断开指针与公事里的维系,也就禁止再针对该公文进行操作。

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

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

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

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

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

 

平等、读字符函数fgetc

 

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

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

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

文本之读写:

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

1.从用户的角度看,文件可分为一般文书和配备文件少栽。

次进制文件是比照二进制的编码方式来存放文件之。 例如, 数5678的储存形式吗:
00010110 00101110单独占二只字节。二进制文件则为不过当屏幕上展示,
但其情节无法读懂。C系统以拍卖这些文件时,并无分类别,都看作是字符流,按字节进行处理。
输入输出字符流的初始和结束就出于程序控制而休叫物理符号(如回车符)的支配。
因此也拿这种文件称“流式文件”。

    可用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]中。  

C库文件

 

本着文本之朗读与描写是太常用之公文操作。

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

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

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

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

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

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

C语言文件操作(3)

#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语言中,文件操作都是由于库函数来完成的。

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

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

中FILE应为充分写,它实在是由网定义的一个数据结构, 该组织面临含文件称、文件状态与文件时岗位等消息。
在编写源程序时不必关心FILE结构的细节。例如:FILE *fp;
表示fp是凭借于FILE结构的指针变量,通过fp
即可寻找存放有文件信息的组织变量,然后以结构变量提供的音讯找到该文件,
实施对文件之操作。习惯及啊含糊地管fp称为指向一个文书之指针。

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

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

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

ASCII码: 0011010100110110 00110111 00111000
十迈入制码: 5 6 7 8 共占用4个字节。ASCII码文件可在屏幕及按照字符显示,
例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的始末。
由于是准字符显示,因此能念懂文件内容。

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

文件要采用了,应用关闭文件函数把公文关闭,
以避免文件的数目丢失等似是而非。


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

又如:

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

·字符读写函数 :fgetc和fputc

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

三.文本操作:

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

(2)文件关闭函数fClose:

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

[例2]自从键盘输入一推行字符,写副一个文书,再将欠公文内容念来显示在屏幕上。

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


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

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

相关文章

发表评论

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

网站地图xml地图