澳门新蒲京娱乐

澳门新蒲京娱乐 10
进程命令澳门新蒲京娱乐:

发送email邮件带附件

C语言文件读写命令,C语言文件操作

C语言文件操作

C语言把磁盘文件作为是字符(或字节)的连串,依照存款和储蓄消息的格局来说,文件重庆大学是有文件文件和二进制文件。文本文件由贰个个字符组成,种种字节存放一个ASCII码制,代表贰个字符。二进制文件把内部存款和储蓄器中的数据按其在内部存款和储蓄器中的存款和储蓄情势原样放入磁盘空间。

C语言文件操作一

二进制文件以及文本文件都得以看成是“数据流”。

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

流文件的特点是,处理时不需考虑文件中的数据的个性、类型和存放格式。访问时只是以字节为单位对数据开始展览存取,没有记录的定义,而将对数据结构的分析、处理等工作都交给后续程序区处理。系统会活动为那在利用的种种文件开辟一个缓存区,从内部存款和储蓄器向磁盘输出数据必须先送到内部存款和储蓄器中的缓存区,装满缓存后才联合送到磁盘。

一.文件的定义:

 

   所谓“文件”是指一组有关数据的有序聚集。
这几个数额集有二个称呼,叫做文件名。
常常接触到的公文诸如源程序文件、目的文件、可执行文件、库文件
(头文件)等。文件一般是驻留在外部介质(如磁盘等)上的,在利用时才调入内部存款和储蓄器中来。

一 、文件的打开与关闭

二.文书的分类:

  
文件在开始展览读写操作在此之前要先开辟,使用达成要关门。所谓打开文件,实际上是树立文件的各样关于消息,并使文件指针指向该公文,以便举行别的操作。关闭文件则断开指针与公事之间的关系,也就禁止再对该文件举行操作。

   从差别的角度可对文件作分歧的分类。

fopen函数用来打开1个文书,其调用的形似格局为:
文本指针名=fopen(文件名,使用文件措施);
其中:
“文件指针名”必须是被认证为FILE 类型的指针变量;
“文件名”是被打开文件的公文名;
“使用文件方式”是指文件的品类和操作供给。
“文件名”是字符串常量或字符串数组。

1.从用户的角度看,文件可分为一般文书和设施文件两种。

动用文件的法子共有12种,上面给出了它们的标记和意义。
“r”
只读打开二个文本文件,只允许读数据
“w”
只写打开或创立贰个文本文件,只同意写多少
“a”
扩充打开1个文本文件,并在文件末尾写多少
“rb”
只读打开三个二进制文件,只同意读数据
“wb”
只写打开或树立3个二进制文件,只允许写多少
“ab”
充实打开八个二进制文件,并在文件末尾写多少
“r+”
读写打开二个文本文件,允许读和写
“w+”
读写打开或确立2个文本文件,允许读写
“a+”
读写打开三个文本文件,允许读,或在文书末扩大数据
“rb+”
读写打开三个二进制文件,允许读和写
“wb+”
读写打开或建立多个二进制文件,允许读和写
“ab+”
读写打开贰个二进制文件,允许读,或在文件末扩充数据

  
普通文书是指驻留在磁盘或任何表面介质上的1个不变数据集,能够是源文件、指标文件、可执行程序;也得以是一组待输入处理的原来数据,或者是一组输出的结果。对于源文件、目的文件、可执行程序能够称呼程序文件,对输入输出数据可称作数据文件。

对此文本使用办法有以下几点表明:
1) 文件使用形式由r,w,a,t,b,+八个字符拼成,各字符的意义是:
r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写
2) 凡用“r”打开1个文书时,该文件必须已经存在,且只好从该公文读出。
3)
用“w”打开的公文只可以向该公文写入。若打开的文件不存在,则以钦点的文书名创设该公文,若打开的文书已经存在,则将该文件删去,重建三个新文件。
4)
若要向三个已存在的公文扩张新的信息,只好用“a”格局打开文件。但此刻该公文必须是存在的,不然将会出错。
5)
在开拓1个文书时,要是出错,fopen将回到2个空指针值NULL。在先后中得以用这一消息来识别是不是到位打开文件的做事,并作相应的处理。

  
设备文件是指与主机相联的种种外部设备,如显示器、打印机、键盘等。在操作系统中,把外部设备也作为是三个文本来展开田间管理,把它们的输入、输出等同于对磁盘文件的读和写。经常把显示屏定义为正式输出文件,
一般情状下在显示器上海展览中心示有关音信即是向专业输出文件输出。如平常采用的printf,putchar函数便是那类输出。键盘平日被钦点专业的输入文件,从键盘上输入就象征从行业内部输入文件上输入数据,scanf,getchar函数就属于这类输入。

贰 、文件的读写
对文本的读和写是最常用的文书操作。在C语言中提供了各类文本读写的函数:
·字符读写函数 :fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf
下边分别赋予介绍。使用上述函数都务求涵盖头文件stdio.h。

2.从文件编码的章程来看,文件可分为ASCII码文件和二进制码文件三种。

(1)字符读写函数 :fgetc和fputc

  
ASCII文件也叫做文本文件,那种文件在磁盘中存放时种种字符对应一个字节,用于存放对应的ASCII码。例如,数5678的贮存格局为:

·fgetc函数的效率是从钦定的文本中读八个字符,函数调用的花样为:
    字符变量=fgetc(文件指针);
    对于fgetc函数的选拔有以下几点表明:
    1) 在fgetc函数调用中,读取的公文必须是以读或读写方式打开的。
    2) 读取字符的结果也得以不向字符变量赋值, 例如: fgetc(fp);
但是读出的字符无法保留。
    3)
在文书之中有三个地点指针。用来针对文件的方今读写字节。在文件打开时,该指针总是指向文件的率先个字节。使用fgetc
函数后,该职位指针将向后移动多少个字节。由此可再三再四数次采用fgetc函数,读取多少个字符。应小心文件指针和文书之中的任务指针不是1回事。文件指针是指向全部文件的,须在先后中定义说明,只要不另行赋值,文件指针的值是不变的。文件之中的岗位指针用以提醒文件之中的当下读写地方,每读写叁回,该指针均向后活动,它不需在先后中定义说明,而是由系统自动安装的。

ASCII码: 0011010100110110 00110111 00111000
十进制码: 5 6 7 8 共占用几个字节。ASCII码文件可在荧屏上按字符显示,
例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的剧情。
由于是按字符突显,由此能读懂文件内容。

·fputc函数的效益为向钦命的文书中写入3个字符,函数调用的花样为:
    fputc(字符量,文件指量或变量),
    例如:
    fputc(‘a’,fp);
    其意putc函数的利用也要表达几点:
    1)
被写入的公文能够用写、读写、追加格局打开,用写或读写格局写入字符从文件首开头。如需保留原来文件内容,希望写入的字符被写入的公文若不设有,则创建该公文。
    2) 每写入2个字符,文件之中地方指针向后运动1个字节。
    3)
fputc函数有叁个重返值,如写入成功则赶回写入的字符,不然重临1个EOF。可用此来判定写符,写入二个文书,再把该文件内容读出呈现在显示屏上。

二进制文件是按二进制的编码格局来存放文件的。 例如, 数5678的存款和储蓄方式为:
00010110 001011十只占三个字节。二进制文件固然也可在荧屏上呈现,
但其剧情不可能读懂。C系统在处理那几个文件时,并不区分连串,都用作是字符流,按字节进行处理。
输入输出字符流的上马和甘休只由程控而不受物理符号(如回车符)的主宰。
因而也把那种文件称作“流式文件”。

【示例程序】
#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 1024
main()
{
    FILE *fpr = fopen(“1.txt”,”r”);
    FILE *fpw = fopen(“2.txt”,”a+”);
    char *arrayCh = NULL;
    char ch;
    if(NULL == fpr){
        printf(“1.txt open failed!\n”);
        exit(1);
    }
    if(NULL == fpw){
        printf(“2.txt open failed!\n”);
        exit(1);
    }
    printf(“Both file open successd!\n”);
    while((ch = fgetc(fpr)) != EOF){
        fputc(ch,fpw);
    }
    while((ch = fgetc(fpw)) != EOF){
        printf(“%c”,ch);
    }
    fclose(fpw);
    fclose(fpr);
    exit(0);
}

三.文书操作:

(2) 字符串读写函数:fgets和fputs

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

·fgets函数的效用是从内定的文件中读1个字符串到字符数组中,函数调用的款式为:
    fgets(字符数组名,n,文件指针);
    个中的n是1个正整数。表示从文件中读出的字符串不超过n-一个字符。在读入的最终3个字符后增进串结束标志’\0’。
   
例如:fgets(str,n,fp);的意思是从fp所指的文书中读出n-贰个字符送入字符数组str中。
    对fgets函数有两点表达:
  1). 在读出n-三个字符此前,如遇上了换行符或EOF,则读出得了。
  2). fgets函数也有再次来到值,其重回值是字符数组的首地址。

文本指针:在C语言中用1个指针变量指向三个文件,这一个指针称为文件指针。通过文件指针就可对它所指的文件举办各个操作。

·fputs函数的作用是向钦命的文件写入叁个字符串,其调用情势为:
    fputs(字符串,文件指针)
在那之中字符串可以是字符串常量,也得以是字符数组名 或 指针变量,
    例如:
    fputs(“abcd“,fp);其含义是把字符串“abcd”写入fp所指的文书之中。

概念表达文件指针的相似情势为: FILE* 指针变量标识符;

【程序示例】
#include<stdio.h>
#include<stdlib.h>
main()
{
    char str[11];
    FILE *fpr = fopen(“1.txt”,”r”);  
    FILE *fpw = fopen(“2.txt”,”a+”);
    if(NULL == fpr){
        printf(“1.txt open failed!\n”);
        exit(1);
    }
    if(NULL == fpw){
        printf(“2.txt open failed!\n”);
        exit(1);
    }
    printf(“file open successed!\n”);
    fgets(str,11,fpr);
    printf(“%s\n”,str);
    fputs(str,fpw);
    fclose(fpr);
    fclose(fpw);
    exit(0);
}

当中FILE应为大写,它实在是由系统定义的3个数据结构, 该组织中包罗文件名、文件状态和文书当前地方等消息。
在编写源程序时不必关注FILE结构的细节。例如:FILE *fp;
表示fp是指向FILE结构的指针变量,通过fp
即可找存放有个别文件信息的构造变量,然后按结构变量提供的音讯找到该文件,
实施对文件的操作。习惯上也不明地把fp称为指向三个文本的指针。

(3)数据块读写函数:fread和fwrite

1.文书的开拓与关闭概念:

C语言还提供了用于整块数据的读写函数。
可用来读写一组数据,如八个数组成分,3个协会变量的值等。

文本在拓展读写操作在此以前要先打开,使用实现要关门。

·读数据块函数fread调用的形似格局为: fread(buffer,size,count,fp);

所谓打开文件,实际上是起家文件的各个有关音信,
并使文件指针指向该文件,以便进行其余操作。

·写多少块函数fwrite调用的貌似方式为: fwrite(buffer,size,count,fp);

关门文件则断开指针与公事之间的关联,也就禁止再对该文件举办操作。

   
当中buffer是3个指南针,在fread函数中,它意味着存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。
size 代表数据块的字节数。count 代表要读写的数码块块数。fp 表示文件指针。

在C语言中,文件操作都以由库函数来成功的。

【程序示例】
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 2
struct stu{
    char name[20];
    int age;
    char addr[20];
}boy[MAXSIZE];
main()
{
    FILE *fp = fopen(“2.txt”,”w+”);
    struct stu rboy[MAXSIZE];
    int i;
    int temp = 0;
    if(NULL == fp){
        printf(“2.txt open failed!\n”);
        exit(1);
    }
    printf(“File open successed!\n”);
    printf(“input data: “);
    for(i = 0;i < MAXSIZE;i++){
        scanf(“%s%d%s”,boy[i].name,&boy[i].age,boy[i].addr);
    }
    for(i = 0;i < MAXSIZE;i++){
        printf(“%s  %d 
%s\n”,boy[i].name,boy[i].age,boy[i].addr);
    }
    fwrite(boy,sizeof(struct stu),MAXSIZE,fp);
    rewind(fp);
    fread(rboy,sizeof(struct stu),MAXSIZE,fp);
    for(i = 0;i < MAXSIZE;i++){
        printf(“name:%s  age:%d 
addr:%s\n”,rboy[i].name,rboy[i].age,rboy[i].addr);
    }
    fclose(fp);
    exit(0);
}

2.文本操作函数:

(4)格式化读写函数:fscanf和fprinf

(1)文件打开函数fopen

fscanf函数,fprintf函数与scanf和printf
函数的效劳相似,都是格式化读写函数。 两者的分化在于 fscanf
函数和fprintf函数的读写对象不是键盘和显示屏,而是磁盘文件。

    fopen函数用来开辟二个文件,其调用的形似方式为:文件指针名=fopen(“文件名”,”使用文件形式”);在那之中,“文件指针名”必须是被评释为FILE
类型的指针变量,“文件名”是被打开文件的文书名。
“使用文件措施”是指文件的档次和操作要求。“文件名”是字符串常量或字符串数组。例如:

那八个函数的调用格式为: 

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

·fscanf(文件指针,格式字符串,输入表列);

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

·fprintf(文件指针,格式字符串,输出表列);

又如:

例如:
  fscanf(fp,”%d%s”,&i,s);
  fprintf(fp,”%d%c”,j,ch);

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

【示例程序】
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 2
struct stu{
    char name[20];
    int age;
    char addr[20];
}boy[MAXSIZE];
main()
{  
    FILE *fp = fopen(“2.txt”,”w+”);
    struct stu rboy[MAXSIZE];
    int i;
    if(NULL == fp){
        printf(“2.txt open failed!\n”);
        exit(1);
    }
    printf(“enter data:\n”);
    for(i = 0;i < MAXSIZE;i++){
        scanf(“%s%d%s”,boy[i].name,&boy[i].age,boy[i].addr);
    }
    for(i = 0;i < MAXSIZE;i++){
        fprintf(fp,”%s %d
%s\n”,boy[i].name,boy[i].age,boy[i].addr);
    }
    for(i = i;i < MAXSIZE;i++){
       
fscanf(fp,”%s%d%s”,rboy[i].name,&rboy[i].age,rboy[i].addr);
    }
    fclose(fp);
    exit(0);
}

其含义是打开C驱动器磁盘的根目录下的文书file_a,那是三个二进制文件,只允许按二进制格局进行读操作。七个反斜线“\\
”中的第一个代表转义字符,第2个象征根目录。”\\”对于打开磁盘下的公文,要留意七个双斜线的不易运用,在代表相对路径时,每一级目录都要用”\\”,


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

####选取文件的点子共有12种,上边给出了它们的号子和含义。

文件使用方法       意 义
“rt” 只读打开二个文本文件,只允许读数据
“wt” 只写打开或建立2个文件文件,只同意写多少
“at” 追加打开多少个文件文件,并在文件末尾写多少
“rb” 只读打开两个二进制文件,只同意读数据
“wb” 只写打开或树立三个二进制文件,只同意写多少
“ab” 追加打开贰个二进制文件,并在文件末尾写多少
“rt+” 读写打开一个文书文件,允许读和写
“wt+” 读写打开或建立3个文书文件,允许读写
“at+” 读写打开三个文书文件,允许读,或在文件末扩充数据
“rb+” 读写打开贰个二进制文件,允许读和写
“wb+” 读写打开或树立三个二进制文件,允许读和写
“ab+” 读写打开3个二进制文件,允许读,或在文件末扩充数据

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

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

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

b.
凡用“r”打开一个文本时,该公文必须已经存在,
且只可以从该文件读出。不然报错。

c. 用“w”打开的文本只好向该公文写入。
若打开的公文不设有,则以钦命的文件名创设该文件,若打开的文书已经存在,则将该公文删去,重建3个新文件。

d.
若要向2个已存在的文本扩大新的新闻,只可以用“a
”形式打开文件。但那时该文件必须是存在的,不然将会出错。

e.
在开拓二个文书时,如若出错,fopen将重返1个空指针值NULL。

在程序中能够用这一消息来识别是不是到位打开文件的办事,并作相应的拍卖。因而常用以下程序段打开文件:

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

那段程序的意思是,如若回去的指针为空,表示无法打开C盘根目录下的file_a文件,则交由提醒新闻“error
on open c:\
file_afile!”,下一行getch()的功能是从键盘输入多个字符,但不在荧屏上出示。在那边,该行的功力是伺机,唯有当用户从键盘敲任一键时,程序才继续执行,
由此用户可接纳这么些等待时间阅读出错提醒。敲键后执行exit(1)退出程序。

f.
把三个文本文件读入内部存款和储蓄器时,要将ASCII码转换到二进制码,
而把公文以文件形式写入磁盘时,也要把二进制码转换到ASCII码,因而文本文件的读写要费用较多的转移时间。对二进制文件的读写不存在这种转移。

g. 标准输入文件(键盘),标准输出文件(荧屏),标准出错输出(出错消息)是由系统打开的,可直接使用。

(2)文件关闭函数fClose:

文本一旦选拔达成,应用关闭文件函数把文件关闭,
以制止文件的数额丢失等不当。

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

比如: fclose(fp);
寻常完成关闭文件操作时,fclose函数再次来到值为0。如重回非零值则意味有错误发生。

 

C语言文件操作(2)

文本的读写:


对文本的读和写是最常用的公文操作。

在C语言中提供了种种文件读写的函数:

·字符读写函数 :fgetc和fputc

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

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

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

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图