文档库 最新最全的文档下载
当前位置:文档库 › 函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结

函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结

函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结
函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结

函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结

字符串读写函数fgets和fputs

一、读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:fgets(字符数组名,n,文件指针);其中的n是一个正整数。表示从文件中读出的字符串不超过n-1个字符。在读入的最后一个字符后加上串结束标志'\0'。例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。

[例10.4]从e10_1.c文件中读入一个含10个字符的字符串。

#include

main()

{

FILE *fp;

char str[11];

if((fp=fopen("e10_1.c","rt"))==NULL)

{

printf("Cannot open file strike any key exit!");

getch();

exit(1);

}

fgets(str,11,fp);

printf("%s",str);

fclose(fp);

}

本例定义了一个字符数组str共11个字节,在以读文本文件方式打开文件e101.c后,从中读出10个字符送入str数组,在数组最后一个单元内将加上'\0',然后在屏幕上显示输出str数组。输出的十个字符正是例10.1程序的前十个字符。

对fgets函数有两点说明:

1. 在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。

2. fgets函数也有返回值,其返回值是字符数组的首地址。

二、写字符串函数fputs

fputs函数的功能是向指定的文件写入一个字符串,其调用形式为:fputs(字符串,文件指针) 其中字符串可以是字符串常量,也可以是字符数组名,或指针变量,例如:

fputs(“abcd“,fp);

其意义是把字符串“abcd”写入fp所指的文件之中。[例10.5]在例10.2中建立的文件string 中追加一个字符串。

#include

main()

{

FILE *fp;

char ch,st[20];

if((fp=fopen("string","at+"))==NULL)

{

printf("Cannot open file strike any key exit!");

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

}

本例要求在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中。

[例10.6]从键盘输入两个学生数据,写入一个文件中,再读出这两个学生的数据显示在屏幕上。

#include

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 key exit!");

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("\n\nname\tnumber age addr\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);

}

本例程序定义了一个结构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函数也可以完成例10.6的问题。修改后的程序如例10.7所示。

[例10.7]

#include

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 key exit!");

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("\n\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);

}

与例10.6相比,本程序中fscanf和fprintf函数每次只能读写一个结构数组元素,因此采用了循环语句来读写全部数组元素。还要注意指针变量pp,qq由于循环改变了它们的值,因此在程序的25和32行分别对它们重新赋予了数组的首地址。

文件的随机读写

前面介绍的对文件的读写方式都是顺序读写,即读写文件只能从头开始,顺序读写各个数据。但在实际问题中常要求只读写文件中某一指定的部分。为了解决这个问题可移动文件内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写。实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。文件定位移动文件内部位置指针的函数主要有两个,即rewind 函数和fseek函数。

rewind函数前面已多次使用过,其调用形式为:rewind(文件指针);它的功能是把文件内部的位置指针移到文件首。下面主要介绍

fseek函数。

fseek函数用来移动文件内部位置指针,其调用形式为:fseek(文件指针,位移量,起始点);其中:“文件指针”指向被移动的文件。“位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。

其表示方法如表10.2。

起始点表示符号数字表示

──────────────────────────

文件首SEEK—SET0

当前位置SEEK—CUR 1

文件末尾SEEK—END 2

例如:

fseek(fp,100L,0);其意义是把位置指针移到离文件首100个字节处。还要说明的是fseek函数一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位置会出现错误。文件的随机读写在移动位置指针之后,即可用前面介绍的任一种读写函数进行读写。由于一般是读写一个数据据块,因此常用fread和fwrite函数。下面用例题来说明文件的随机读写。

[例10.8]在学生文件stu list中读出第二个学生的数据。

#include

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 file strike 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 age addr\n");

printf("%s\t%5d %7d %s\n",qq->name,qq->num,qq->age,

qq->addr);

}

文件stu_list已由例10.6的程序建立,本程序用随机读出的方法读出第二个学生的数据。程序中定义boy为stu类型变量,qq为指向boy 的指针。以读二进制文件方式打开文件,程序第22行移动文件位置指针。其中的i值为1,表示从文件头开始,移动一个stu类型的长度,然后再读出的数据即为第二个学生的数据。

文件检测函数

C语言中常用的文件检测函数有以下几个。

一、文件结束检测函数feof函数调用格式:feof(文件指针);

功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。

二、读写文件出错检测函数ferror函数调用格式:ferror(文件指针);

功能:检查文件在用各种输入输出函数进行读写时是否出错。如ferror返回值为0表示未出错,否则表示有错。

三、文件出错标志和文件结束标志置0函数clearerr函数调用格式:clearerr(文件指针);

功能:本函数用于清除出错标志和文件结束标志,使它们为0值。

C库文件

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相兼容而说明的一些常量,包括浮点和双精度值的范围。

C语言中如何读取以逗号分割的文件中的数据

要有逗号,就全加逗号,

2,1,34,2,3,

1,400,5,

3,5,6,7,

读:

for (j=0;j

for (i=0;i

fscanf(fin,"%d,",a[j][i]);

-----------------------------

如果行尾无逗号,每行数据的个数应相等:

2,1,34,2

3,1,400,5

for (j=0;j

for (i=0;i

fscanf(fin,"%d,",a[j][NC-1]);

}

-----------------------------

随机有逗号,随机行长

2,1,34,2,3

1,400,5

3,5,6,7

用fgets读入,计算行长,按字符循环找逗号,并用空白代替逗号,再用sscanf 读入数据

----------------------------

不知道总个数。一是开大数组。

二是预读,数出个数,开数组,

rewind(fin);

再从头输入。

常用基本参数对照:

%d:读入一个十进制整数.

%i :读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d 时会被算作31,但是使用%i时会算作25.

%u:读入一个无符号十进制整数.

%f %F %g %G : 用来输入实数,可以用小数形式或指数形式输入.

%x %X:读入十六进制整数.

%o: 读入八进制整数.

%s : 读入一个字符串,遇空格结束。

%c : 读入一个字符。无法读入空值。空格可以被读入。

附加格式说明字符表修饰符说明

L/l 长度修饰符输入"长"数据

h 长度修饰符输入"短"数据

fscanf类函数

fscanf()函数详解 以前解析有规律的文件的时候要么用正则表达式,要么就是傻傻的自己写程序来解析有规律的文件。今天突然发现c的库函数中有一个现成的可以解析有规律的文件的函数,就是fscanf()函数。哎以前自己做了这么多无用功,在这里详细解析一下fscanf函数: fscanf()函数(有点像正则表达式): 功能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。 用法:int fscanf(FILE *stream, char *format,[argument...]); int fscanf(文件指针,格式字符串,输入列表); for example: FILE*fp; chara[10]; intb; doublec; fscanf(fp,"%s%d%lf",a,&b,&c) 返回值:整型,数值等于[argument...]的个数 其中的format就是相当于正则表达式中的格式,即用什么样的格式来分隔文件中的信息。光说不好理解,一下用一个例子来说明具体怎么用: 首先我有一个data。txt的文件里面的数据格式如下: 2,50,41,w,20.585828 4,52,51,r,52.012547

......................... 许多条类似的记录,都是以,来分隔的....................... 我实现的功能就是把上面文件中的数据的五个字段赋值给相应的五个变量,并且输出这些变量的值。实现的程序如下: #include #include int main() { int fd; long dev; long offset; long length; char ch; double ts=0.000000; if((fd=fopen("/home/haixian/ceshi/data.txt","r"))<0) { printf("open the file is error!\n"); exit(0); } lseek(fd,0,SEEK_SET); while(5==fscanf(fd,"%ld,%ld,%ld,%c,%lf\n",&dev,&offset,&length,&ch,&ts)) {在这里就是第二个参数指定分隔参数的格式,在这里使用的是,来分隔。这样就很容易的获取了记录的各个字段的值并不需要自己编写函数来进行解析什么的。 printf("%ld,%ld,%ld,%c,%lf\n",dev,offset,length,ch,ts); } close(fd);

数据挖掘论文

数据挖掘课程论文 ——————数据挖掘技术及其应用的实现 数据挖掘技术及其应用的实现 摘要:随着网络、数据库技术的迅速发展以及数据库管理系统的广泛应用,人们积累的数据越来越多。数据挖掘(Data Mining)就是从大量的实际应用数据中提取隐含信息和知识,它利用了数据库、人工智能和数理统计等多方面的技术,是一类深层次的数据分析方法。本文介绍了数据库技术的现状、效据挖掘的方法以及它在Bayesian网建网技术中的应用:通过散据挖掘解决Bayesian网络建模过程中所遇到的具体问题,即如何从太规模效据库中寻找各变量之间的关系以及如何确定条件概率问题。 关键字:数据挖掘、知识获取、数据库、函数依赖、条件概率 一、引言: 数据是知识的源泉。但是,拥有大量的数据与拥有许多有用的知识完全是两回事。过去几年中,从数据库中发现知识这一领域发展的很快。广阔的市场和研究利益促使这一领域的飞速发展。计算机技术和数据收集技术的进步使人们可以从更加广泛的范围和几年前不可想象的速度收集和存储信息。收集数据是为了得到信息,然而大量的数据本身并不意味信息。尽管现代的数据库技术使我们很容易存储大量的数据流,但现在还没有一种成熟的技术帮助我们分析、理解并使数据以可理解的信息表示出来。在过去,我们常用的知识获取方法是由知识工程师把专家经验知识经过分析、筛选、比较、综合、再提取出知识和规则。然而,由于知识工程师所拥有知识的有局限性,所以对于获得知识的可信度就应该打个 折扣。目前,传统的知识获取技术面对巨型数据仓库无能为力,数据挖掘技术就应运而生。 数据的迅速增加与数据分析方法的滞后之间的矛盾越来越突出,人们希望在对已有的大量数据分析的基础上进行科学研究、商业决策或者企业管理,但是目前所拥有的数据分析工具很难对数据进行深层次的处理,使得人们只能望“数”兴叹。数据挖掘正是为了解决传统分析方法的不足,并针对大规模数据的分析处理而出现的。数据挖掘通过在大量数据的基础上对各种学习算法的训练,得到数据对象间的关系模式,这些模式反映了数据的内在特性,是对数据包含信息的更高层次的抽象[1]。目前,在需要处理大数据量的科研领域中,数据挖掘受到越来越多的关注,同时,在实际问题中,大量成功运用数据挖掘的实例说明了数据挖掘对科学研究具有很大的促进作用。数据挖掘可以帮助人们对大规模数据进行高效的分

fgets和gets的区别

fgets函数 从流中读一行或指定个字符, 原型是char *fgets(char *s, int n, FILE *stream); 从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。 形参注释:*string结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针 例:如果一个文件的当前位置的文本如下 Love ,I Have But ........ 如果用 fgets(str1,4,file1); 则执行后str1="Lov",读取了4-1=3个字符, 而如果用 fgets(str1,23,file1); 则执行str="Love ,I Have",读取了一行(不包括行尾的'n')。 序例: #include #include int main(void) { FILE *stream;

char string[] = "This is a test"; char msg[20]; /* open a file for update */ stream = fopen("DUMMY.FIL", "w+"); /* write a string into the file */ fwrite(string, strlen(string), 1, stream); /* seek to the start of the file */ fseek(stream, 0, SEEK_SET); /* read a string from the file */ fgets(msg, strlen(string)+1, stream); /* display the string */ printf("%s", msg); fclose(stream); return 0; } fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自

文件打开函数fopen

文件打开函数fopen fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如: FILE *fp; fp=("file a","r"); 其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件。 -------------------------------------------------------------------------------- -- C语言的文件操作 FILE *fphzk fphzk=("c:\\hzk16',"rb") 其意义是打开C驱动器磁盘的根目录下的文件hzk16,这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“”中的第一个表示转义字符,第二个表示根目录。使用文件的方式共有12种,下面给出了它们的符号和意义。 文件使用方式意义 “rt”只读打开一个文本文件,只允许读数据 “wt”只写打开或建立一个文本文件,只允许写数据 “at”追加打开一个文本文件,并在文件末尾写数据 “rb”只读打开一个二进制文件,只允许读数据 “wb”只写打开或建立一个二进制文件,只允许写数据 “ab”追加打开一个二进制文件,并在文件末尾写数据 “rt+”读写打开一个文本文件,允许读和写 “wt+”读写打开或建立一个文本文件,允许读写 “at+”读写打开一个文本文件,允许读,或在文件末追加数据 “rb+”读写打开一个二进制文件,允许读和写 “wb+”读写打开或建立一个二进制文件,允许读和写 “ab+”读写打开一个二进制文件,允许读,或在文件末追加数据 对于文件使用方式有以下几点说明: 1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是: r(read): 读 w(write): 写 a(append): 追加 t(text): 文本文件,可省略不写 b(banary): 二进制文件 +: 读和写 2. 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。

Matlab之print,fprint,fscanf,disp函数的用法

print: print函数可以把函数图形保存成图片: minbnd = -4*pi; maxbnd = 4*pi; t = minbnd:0.1*pi:maxbnd; plot(t, sin(t), 'g', 'Linewidth', 2); line([minbnd, maxbnd], [0, 0]); %绘制x轴 axis([-10, 10, -2, 2]) %定义显示的坐标区间:x在(-10,10)之间,y在(-2,2)之间 grid on; title('sin(x)'); xlabel('x'); ylabel('sin(x)'); print('-dpng','sin.png'); %保存为png图片,在Matlab当前的工作目录下 如下: 打开Matlab当前的工作目录下可以看到有sin.png图片了 print('-dpng', 'sin.png')表示保存为png图片,文件名为sin.png,其中第一个参数可以是: -dbmp:保存为bmp格式 -djpeg:保存为jpeg格式 -dpng:保存为png格式 -dpcx:保存为pcx格式 -dpdf:保存为pdf格式 -dtiff:保存为tiff格式

fprintf: fprintf函数可以将数据按指定格式写入到文本文件中: data = [5, 1, 2; 3, 7, 4]; [row, col] = size(data); for i=1:row for j=1:col fprintf('data(%d, %d) = %d\n', i, j, data(i, j)); %直接输出到屏幕;类似于C语言的输出格式end end fprintf(fid, format, data)中的fid表示由fopen函数打开的文件句柄,如果fid 省略,则直接输出在屏幕上,format是字符串形式的输出格式,data是要输出的数据。其中format可以为: %c 单个字符 %d 有符号十进制数(%i也可以) %u 无符号十进制数 %f 浮点数(%8.4f表示对浮点数取8位宽度,同时4位小数) %o 无符号八进制数 %s 字符串 %x 小写a-f的十六进制数 %X 大小a-f的十六进制数 输出到文件: data = [5, 1, 2; 3, 7, 4]; [row, col] = size(data); %求出矩阵data的行数和列数 %加t表示按Windows格式输出换行,即0xOD 0x0A,没有t表示按Linux格式输出换行,即0x0A fid=fopen('test.txt', 'wt'); %打开文件 for i=1:row

计算机四级数据库真题及解析(8)

计算机四级数据库真题及解析(8) 1 下列哪一项工作属于数据库管理员的职责()。 A) 参与用户需求调研和系统分析 B) 确定数据库的存储结构和存取策略 C) 编写应用系统的程序模块 D) 应用系统的安装和调试 2 下列关于数据库数据字典的叙述中,哪一条是错误的()。 A) 数据字典中保存关于数据库的描述信息 B) 数据字典与元数据是不同的概念 C) 程序访问数据库数据时,由 DBMS 通过查询数据字典确定被访问的数据 D) 数据独立性是指存储在数据库的数据字典中的数据文件结构,与访问它的程序之间是相互分离的 3 涉及企业订单处理、市场及客户支持等功能领域的应用软件是 A) CRM B) ERP C) Web Portal D) Search Engine 4 下列关于数据模型的数据约束的叙述中,哪一条是错误的()。 A) 数据约束描述数据结构中数据间的语法和语义关联 B) 数据约束用以保证数据的正确性、有效性和相容性 C) 数据完整性约束是数据约束的一种 D) 数据约束指的是数据的静态特征,不包括数据的动态行为规则 5 下列关于物理层模型的叙述中,哪一条是错误的()。 A) 物理层模型是数据库最底层的抽象 B) 物理层模型确定数据的存储结构、存取路径 C) 逻辑模型是物理层模型的实现 D) 物理层模型的设计目标是提高数据库的性能和有效利用存储空间

6 下列关于层次模型的叙述中,哪一条是错误的()。 A) 层次模型主要反映现实世界中实体间的层次关系 B) 层次模型用有向图结构表示实体及它们之间的联系 C) 层次模型的存储结构可以通过邻接法、链接法、和邻接 -链接混合法实 现数据间的存储连接 D) 层次模型引入冗余数据和指针来实现实体的多对多关系 7 设关系 R与关系 S具有相同的度,且相对应的属性的值取自同一个域, 则 R-(R-S)与下列哪一项等价()。 A) R∪S B) R∩S C) R ×S D) R-S 8 如图所示的两个关系 R和 S 则关系 T是下列哪一项操作得到的结果()。 A) R 和 S的自然连接 B) R 和 S的左外连接 C) R 和 S的右外连接 D) R 和 S的全外连接 9 若属性(或者属性组) F是关系 R的外码,它与关系S的主码 Ks相对应,则下列关于关系模型中参照完整性约束的叙述中哪一条是错误的()。 A) 关系 R和关系 S 必须是不同关系 B) F 可以取空值 C) 如果 F 非空,则它的取值必须是 S 中某个元组的主码值 D) F 与 Ks可以同名,也可以不同名 10 有一个关系:学生(学号,姓名,系别),规定学号的值域是 8个数字 组成的字符串,这一规则属于下列哪一项约束()。 A) 实体完整性约束 B) 参照完整性约束 C) 用户自定义完整性约束 D) 关键字完整性约束 11 如图所示的两个关系R和S 则关系T是下列哪一操作得到的结果()。

C语言文件操作函数总结

文件操作函数: 打开方式的取值和意义如下: ◆"r":该打开方式为只读方式 ◆"w":该打开方式为只写方式 ◆"a":该打开方式为尾加方式 ◆"r+":该打开方式为读/写方式,相当于"r"与"w"方式的结合。 ◆"w+":该打开方式为读/写方式,相当于"r"与"w"方式的结合。 ◆"a+":该打开方式为读/尾加方式 ◆"rb":该打开方式为只读方式 ◆"wb":该打开方式为只写方式 ◆"ab":该打开方式为尾加方式 ◆"rb+":该打开方式为读/写方式,相当于"rb"与"wb"方式的结合。 ◆"wb+":该打开方式为读/写方式,相当于"rb"与"wb"方式的结合。 ◆"ab+":该打开方式为读/尾加方式 打开文件:fopen( "文件路径",“使用文件方式”)。 关闭文件: fclose( 文件指针)。 char fgetc(FILE *p); 函数读取参数p指向的文件。fgetc函数返回一个字符。 处理读取结束:对于文本文件,如果读取位置到达文件末尾,fgetc函数返回一个结束标志EOF ; ANSI C提供了一个feof(FILE *p) 函数,当fgetc函数读取到文件末尾时,feof(FILE *p)函数返回1,否则返回0。 char * fgets(char str[],int n,FILE *p) ; 函数读取参数p指向的文件每次调用fgets(char str[],int n,FILE *p) 就顺序地读取n个字节,如此顺序地读取,直到读取的n个字节包含文件的结束标志。 fgets函数按文本方式读取文件,如果读取的n个字节中含有文件的结束标志EOF,fgets函数返回NULL。 char fputs(char str[],FILE *p); 向参数p指向的文件写入字符数组str。每次调用fputs函数就顺序地向文件中写入字符串str,如此顺序地写入,直到停止调用fputs函数或发生写入错误。

fscanf的用法以及取得多位数组中的行或列

今天帮同学写了一个程序,主要目的是从一个文件中读取数据,然后用这些数据来画图。进过短时间学习,成果如下: matlab中的fscanf的用法如下: A=fscanf(fid,format) [A, count]=fscanf(fid,format,size) [A, count]=fscanf(fid,format,size) 个人感觉用的最多的是这样的形式: data = fscanf(fid,format,size); 期中data为读取内容的数组,他的大小由size决定。size是一个[m n]的向量, m为行,n为列(注意,这里读取的顺序是按列优先排列的,不明白的话可以看 下面的例子),若n取inf表示读到文件末尾。fid为fopen打开文件的返回值, format是格式化参数(像printf、scanf)。 举个小例子: 路径+文件名:d:\moon.txt 内容:13,1,3.4 3,2.1,23 1,12,2 4,5.4,6 现在为了读取moon中的数据存在一个数组里,可以用如下方法 fid=fopen('d:\moon.txt'); data=fscanf(fid,'%f,%f,%f',[3,inf]) ;%这里得用单引号 fclose(fid); 这时data中的数据如下:

13 3 1 4 1 2.1 1 2 5.4 4 23 2 6 通常我们可能需要用引用数组中的某行或某列来画图,方法是data(m,:) 或者data(:,n),即取得data数组的第m行或第n列。 正式之读取资料函数如下之格式: A=fscanf(fid,format) [A, count]=fscanf(fid,format,size) [A, count]=fscanf(fid,format,size) 這個指令可以自fid所標示的檔案中將其資料依format的格式取出,並置於矩陣A中。这个指令可以自fid所标示的档案中将其资料依format的格式取出,并置于矩阵A中。fid 的定義與前述之fprintf指令相同。fid的定义与前述之fprintf指令相同。另一種型式則增加count與size兩參數。另一种型式则增加count与size两参数。count表示已完成的資料筆數。count表示已完成的资料笔数。而size則是決定讀入之資料量,可用[m,n]表示,表示讀入之資料可填滿mxn的矩陣。而size则是决定读入之资料量,可用[m,n]表示,表示读入之资料可填满mxn的矩阵。其中n 可用inf取代,代表EOF(End of File)。其中n可用inf 取代,代表EOF(End of File)。 此處格式format 之% 符號大體上與fprintf 相同,其中%e,%f,%g 均代表具有浮點之數據。此处格式format 之% 符号大体上与fprintf 相同,其中%e,%f,%g 均代表具有浮点之数据。以%12hd 為例,12 為數值之總位數,d 代表使用整數,其前面所置的文字表示整數的型式,h 代表短整數,l 代表長整數,而lg 則代表雙精度浮點值。以%12hd 为例,12 为数值之总位数,d 代表使用整数,其前面所置的文字表示整数的型式,h 代表短整数,l 代表长整数,而lg 则代表双精度浮点值。這些文字代碼可參考fprintf 指令,其功能相似。这些文字代码可参考fprintf 指令,其功能相似。 fid=fopen('sinx.txt'); A=fscanf(fid,'%g %g',[2 inf]); %最後項為size,表示讀入二列資料,直到檔案底A=fscanf(fid,'%g %g',[2 inf]); %最后项为size,表示读入二列资料,直到档案底fclose(fid); A=A' A = A = 0 0.3142 0 0.3142 0.6283 0.9425 0.6283 0.9425 1.2566

C语言文件读写函数集合

C语言文件读写函数 1.fopen() fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen 实现三个功能:为使用而打开一个流,把一个文件和此流相连接,给此流返回一个FILR指针。 参数filename指向要打开的文件名,mode表示打开状态的字符串,其取值如下: 字符串含义 "r" 以只读方式打开文件 "w" 以只写方式打开文件 "a" 以追加方式打开文件 "r+" 以读/写方式打开文件,如无文件出错 "w+" 以读/写方式打开文件,如无文件生成新文件 一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符’/n’,而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。

系统默认的是以文本模式打开,可以修改全部变量_fmode的值来修改这个设置,例如_fmode=O_TEXT;就设置默认打开方式为文本模式;而 _fmode=O_BINARY;则设置默认打开方式是二进制模式。 我们也可以在模式字符串中指定打开的模式,如"rb"表示以二进制模式打开只读文件,"w+t"或"wt+"表示以文本模式打开读/写文件。 此函数返回一个FILE指针,所以申明一个FILE指针后不用初始化,而是用fopen()来返回一个指针并与一个特定的文件相连,如果成败,返回NULL. 例: 以下是引用片段: FILE *fp; if(fp=fopen("123.456","wb")) puts("打开文件成功"); else puts("打开文件成败"); 2.fclose() fclose()的功能就是关闭用fopen()打开的文件,其原型是:int fclose(FILE *fp);如果成功,返回0,失败返回EOF。 在程序结束时一定要记得关闭打开的文件,不然可能会造成数据丢失的情况,我以前就经常犯这样的错误。 例:fclose(fp); 3.fputc()

数据挖掘技术及其应用

数据挖掘毕业论文 ---------数据挖掘技术及其应用 摘要:随着网络、数据库技术的迅速发展以及数据库管理系统的广泛应用,人们积累的数据越来越多。数据挖掘(Data Mining)就是从大量的实际应用数据中提取隐含信息和知识,它利用了数据库、人工智能和数理统计等多方面的技术,是一类深层次的数据分析方法。本文介绍了数据库技术的现状、效据挖掘的方法以及它在Bayesian网建网技术中的应用:通过散据挖掘解决Bayesian网络建模过程中所遇到的具体问题,即如何从太规模效据库中寻找各变量之间的关系以及如何确定条件概率问题。 关键字:数据挖掘、知识获取、数据库、函数依赖、条件概率 一、引言: 数据是知识的源泉。但是,拥有大量的数据与拥有许多有用的知识完全是两回事。过去几年中,从数据库中发现知识这一领域发展的很快。广阔的市场和研究利益促使这一领域的飞速发展。计算机技术和数据收集技术的进步使人们可以从更加广泛的范围和几年前不可想象的速度收集和存储信息。收集数据是为了得到信息,然而大量的数据本身并不意味信息。尽管现代的数据库技术使我们很容易存储大量的数据流,但现在还没有一种成熟的技术帮助我们分析、理解并使数据以可理解的信息表示出来。在过去,我们常用的知识获取方法是由知识工程师把专家经验知识经过分析、筛选、比较、综合、再提取出知识和规则。然而,由于知识工程师所拥有知识的有局限性,所以对于获得知识的可信度就应该打个 折扣。目前,传统的知识获取技术面对巨型数据仓库无能为力,数据挖掘技术就应运而生。 数据的迅速增加与数据分析方法的滞后之间的矛盾越来越突出,人们希望在对已有的大量数据分析的基础上进行科学研究、商业决策或者企业管理,但是目前所拥有的数据分析工具很难对数据进行深层次的处理,使得人们只能望“数”兴叹。数据挖掘正是为了解决传统分析方法的不足,并针对大规模数据的分析处理而出现的。数据挖掘通过在大量数据的基础上对各种学习算法的训练,得到数据对象间的关系模式,这些模式反映了数据的内在特性,是对数据包含信息的更高层次的抽象[1]。目前,在需要处理大数据量的科研领域中,数据挖掘受到越来越多

c语言中的fgets与fputs函数

fgets函数详解 fgets函数详解 fgets函数从流中读一行或指定个字符, 原型是char *fgets(char *s, int n, FILE *stream); 从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s 的指针,否则返回NULL。 形参注释:*s结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针 例:如果一个文件的当前位置的文本如下 Love ,I Have But ........ 如果用 fgets(str1,4,file1); 则执行后str1="Lov",读取了4-1=3个字符, 而如果用 fgets(str1,23,file1); 则执行str="Love ,I Have",读取了一行(包括行尾的'\n',并自动加上字符串结束符'\0')。编辑本段序例: #include int main(void) { FILE *stream; char string[] = "This is a test"; char msg[20]; /* open a file for update */ stream = fopen("DUMMY.FIL", "w+"); /* write a string into the file */ fwrite(string, strlen(string), 1, stream); /* seek to the start of the file */ fseek(stream, 0, SEEK_SET); /* read a string from the file */ fgets(msg, strlen(string)+1, stream); /* display the string */ printf("%s", msg); fclose(stream); return 0; }

①数据描述,关系,函数依赖

数据管理阶段:手工管理阶段、文件系统阶段、数据库管理系统阶段。 三级模式:外模式、模式、内模式。 二级映像: ①外模式—模式:通过映射建立对应关系,模式变时只需修改映射关系, 可使外模式保持不变。 ②模式—内模式:通过映射建立对应关系,模式变时只需修改映射关系, 可使模式保持不变。 数据描述 1)概念数据模型概念模型 抽象:通过抓取事物的主要特征来表达事物的过程。 ①实体:Entity,现实世界中的客观事物,是现实世界中任何可区分、可识别的事物。 ②属性:Proprety 实体的特性。 ③实体关系:实体之间的对应关系:一对一、一对多、多对多。 ④※表达(E —R)Entity—Relation 2)逻辑数据模型 层次型:条件:①只能有一个根节点(无父节点) ②其他节点只能有一个父节点 网状型:条件:①只能有一个根节点(无父节点) ②其他节点可以有一个或者多个父节点 关系型:关系:二维表 元组:表中的行 属性:表中的列 对象型: 关系概念: ⑴域:具有相同特征的数据集合(取值范围) ⑵笛卡尔积:定义在一组域上的集合 例:D1×D2×D3={(d1,d2,.....dn)|di(-Di,1<=n<=n,n>=1} D1={男,女} D2={张三,李四} D3={20,18,19} D1×D2×D3={(男,张三,20),(男,张三,18),(男,张三,19), (男,李四,20),(男,李四,18),(男,李四,19), (女,张三,20),(女,张三,18),(女,张三,19), (女,李四,20),(女,李四,18),(女,李四,19)} ⑶关系:是笛卡尔积的一个子集,若笛卡尔积有n个域,则该笛卡尔积、子集称为n元关系(集合论) ⑷关键字(码):能唯一区分确定不同元组的属性或属性集合是该关系的一个关键字。 ①超码:能唯一识别每个元组的属性或属性组 ②候选码:能唯一识别每个元组的最少属性或属性组 ③主码:从候选码中选出一个作为主码 ④备用码:除了主码之外的候选码 ⑤外码:关系R1中的属性或者属性组在另一个关系R2中是主码,则称该属性或属性组是R1的外码。

VC读写函数详解(针对文件)

VC读写函数详解 1.当前文件指针位置获取函数 long ftell( FILE *stream ); 参数:stream 文件指针 返回值:当前文件指针的位置 实例: #include FILE *stream; void main( void ) { long position; char list[100]; if( (stream = fopen( "ftell.c", "rb" )) != NULL ) { /* Move the pointer by reading data: */ fread( list, sizeof( char ), 100, stream ); /* Get position after read: */ position = ftell( stream ); printf( "Position after trying to read 100 bytes: %ld\n", position ); fclose( stream ); } } 输出: Position after trying to read 100 bytes: 100 2.文件的打开函数 FILE *fopen( const char *filename, const char *mode ); FILE *_wfopen( const wchar_t *filename, const wchar_t *mode ); 参数:filename 文件的名称mode 打开文件的模式 返回值:成功的打开文件的话返回文件的指针否则返回NULL表示打开文件错误 注: "r" 只读方式打开 "w" 以写入方式打开 "a" 从文件的尾端写入数据,要是文件不存在则创建后写入数据 "r+"

fscanf()函数

fscanf 函数名: fscanf 功能: 从一个流中执行格式化输入 用法: int fscanf(FILE *stream, char *format,[argument...]); int fscanf(文件指针,格式字符串,输入列表); 返回值:整型,数值等于[argument...]的个数 程序例: #include #include int main(void) { int i; printf("Input an integer: "); /* read an integer from the standard input stream */ if (fscanf(stdin, "%d", &i)) printf("The integer read was: %d\n", i); else { fprintf(stderr, "Error reading an \ integer from stdin.\n"); exit(1); } return 0; } 返回EOF如果读取到文件结尾。 常用基本参数对照: '%d' : Scan an integer as a signed decimal number. '%i' : Scan an integer as a signed number. Similar to '%d', but interprets the number as hexadecimal when preceded by "0x" and octal when preceded by "0". For example, the string "031" would be read as 31 using '%d', and 25 using '%i'. '%u' : Scan for decimal unsigned int, unsigned short, and unsigned char '%f' : Scan a floating-point number in normal (fixed-point) notation. '%g', '%G' : Scan a floating-point number in either normal or exponential notation. '%g' uses lower-case letters and '%G' uses

数据库函数依赖

数据库函数依赖 一、函数依赖(Functional Dependency)的概念 数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。 二、定义 设R(U)是属性U上的一个关系模式,X和Y均为U={A1,A2,…,An}的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y。 例: (sno-学生ID,tno-教师ID,cno-课程ID,sname-学生姓名,tname-教师姓名,cname-课程名称,grade-成绩) 1、sno→sname, cno→cname,(sno,cno)→grade √ 2、sname→sno, tno→cno, sno→tname × 三、函数依赖是语义范畴 1、语义:数据所反映的现实世界事物本质联系 2、根据语义来确定函数依赖性的存在与否 3、函数依赖反映属性之间的一般规律,必须在关系模式下的任一个关系r中都满足约束条件。 四、属性间的联系决定函数依赖关系 设X、Y均是U的子集 1、X和Y间联系是1:1,则X→Y,Y→X。(相互依赖,可记作X←→Y) 2、X和Y间联系是M:1(M),则X→Y。 3、X和Y间联系是M:N(M,N),则X、Y间不存在函数依赖。 五、完全函数依赖和部分函数依赖 1、函数依赖分为完全函数依赖和部分函数依赖 2、定义: 在R(U)中,如果X→Y,并且对于X的任何真子集X'都有X'Y',则称Y完全依赖于X,记作X→Y;否则,如果X→Y,且X中存在一个真子集X',使得X'→Y成立,则称Y部分依赖于X。 例: 学生ID,学生姓名,所修课程ID,课程名称,成绩 (学生ID,所修课程ID)→成绩 成绩既不能单独依赖于学生ID,也不能单独依赖于所修课程ID,因此成绩完全函数依赖于关键字。 (学生ID,所修课程ID)→学生姓名 学生ID→学生姓名 学生姓名可以依赖于关键字的一个主属性——学生ID,因此学生姓名部分函数依赖于(学生ID,所修课程ID)。 六、平凡函数依赖和非平凡函数依赖 设X,Y均为某关系上的属性集,且X→Y 1)若Y包含于X,则称X→Y为:平凡函数依赖;(Sno, Cno) →Sno (Sno, Cno) →Cno 2)若Y不包含于X,则称X→Y为:非平凡函数依赖。(Sno, Cno) →Grade Y包含于X内,W于X相交,与Y无直接交集。 则:X→Y为平凡函数依赖

从零开始学习C语言一之读取文本文件函数fgetsseven51CTO

从零开始学习C语言(一)之读取文本文件(函数fgets) - seven - 51CTO.txt你站在那不要动!等我飞奔过去!雨停了天晴了女人你慢慢扫屋我为你去扫天下了 你是我的听说现在结婚很便宜,民政局9块钱搞定,我请你吧你个笨蛋啊遇到这种事要站在我后面!跟我走总有一天你的名字会出现在我家的户口本上。从零开始学习C语言(一)之读取文本文件(函数fgets) - seven - 51CTO技术博客51CTO 首页我的博客搜索社区:论坛博客下载读书更多 登录注册家园 博客 论坛 下载 自测 门诊 周刊 读书 技术圈 知道 https://www.wendangku.net/doc/ee14589765.html, 【复制】【订阅】原创:125翻译:1转载:62 博客|图库|写博文|帮助 首页|应用代理|数据库|程序设计|监控系统|负载优化|虚拟化|系统工具|C语言|svn&trac&bug|业界生活|生活锁事|puppet 守住每一天 的BLOG 写留言邀请进圈子发消息加友情链接进家园加好友 博客统计信息 51cto博客之星 用户名:守住每一天 文章数:188 评论数:655 访问量:323162 无忧币:6061 博客积分:5748 博客等级:8 注册日期:2007-06-13 热门文章 nginx反向代理配置及优化 从零开始学习C语言(一).. apache+jk+tomcat集群+se.. umount 的时候报错:devic.. mysql+mmm+proxy实现mysq.. nagios 3.X 简单部署及应用 ntop安装过程 我用nagios-check_http .. HTTP 错误 401.1(401.2/4.. 暂时的失业和降薪,是为.. 解决tomcat死掉JK无法连..

C语言文件操作函数大全

~~~~~~~~~~##打印了好好学习##~~~~~~~~~~歪诗协会QQ978107204 C语言文件操作函数大全 相关函数feof 表头文件#include 定义函数void clearerr(FILE * stream); 函数说明clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose(关闭文件) 相关函数close,fflush,fopen,setbuf 表头文件#include 定义函数int fclose(FILE * stream); 函数说明fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。 返回值若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。 错误代码EBADF表示参数stream非已打开的文件。 范例请参考fopen()。 fdopen(将文件描述词转为文件指针) 相关函数fopen,open,fclose 表头文件#include 定义函数FILE * fdopen(int fildes,const char * mode); 函数说明fdopen()会将参数fildes 的文件描述词,转换为对应的文件指针后返回。参数mode 字符串则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。关于mode 字符串格式请参考fopen()。 返回值转换成功时返回指向该流的文件指针。失败则返回NULL,并把错误代码存在errno中。 范例 #include main() { FILE * fp =fdopen(0,”w+”); fprintf(fp,”%s\n”,”hello!”); fclose(fp); } 执行hello! feof(检查文件流是否读到了文件尾) 相关函数fopen,fgetc,fgets,fread 表头文件#include 定义函数int feof(FILE * stream); 函数说明feof()用来侦测是否读取到了文件尾,尾数stream为fopen()所返回之文件指针。如果已到文件尾则返回非零值,其他情况返回0。 返回值返回非零值代表已到达文件尾。 fflush(更新缓冲区) 相关函数write,fopen,fclose,setbuf 表头文件#include 定义函数int fflush(FILE* stream); 函数说明fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中。如果参数stream为NULL,fflush()会将所有打开的文件数据更新。 返回值成功返回0,失败返回EOF,错误代码存于errno 中。 错误代码EBADF 参数stream 指定的文件未被打开,或打开状态为只读。其它错误代码参考write()。fgetc(由文件中读取一个字符) 相关函数open,fread,fscanf,getc 表头文件include 定义函数nt fgetc(FILE * stream); 函数说明fgetc()从参数stream所指的文件中读取一个字 符。若读到文件尾而无数据时便返回EOF。 返回值getc()会返回读取到的字符,若返回EOF则表示到了文件尾。 范例 #include main() { FILE *fp; int c; fp=fopen(“exist”,”r”); while((c=fgetc(fp))!=EOF) printf(“%c”,c); fclose(fp); } fgets(由文件中读取一字符串) 相关函数open,fread,fscanf,getc 表头文件include 定义函数har * fgets(char * s,int size,FILE * stream); 函数说明fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。 返回值gets()若成功则返回s指针,返回NULL则表示有错误发生。 范例 #include main() { char s[80]; fputs(fgets(s,80,stdin),stdout); } 执行this is a test /*输入*/ this is a test /*输出*/ fileno(返回文件流所使用的文件描述词) 相关函数open,fopen 表头文件#include 定义函数int fileno(FILE * stream); 函数说明fileno()用来取得参数stream指定的文件流所使用的文件描述词。 返回值返回文件描述词。 范例 #include main() { FILE * fp; int fd; fp=fopen(“/etc/passwd”,”r”); fd=fileno(fp); printf(“fd=%d\n”,fd); fclose(fp);

相关文档