首页技术fscanf函数的作用 fgetc函数

fscanf函数的作用 fgetc函数

编程之家2026-06-11671次浏览

大家好,今天给各位分享fscanf函数的作用的一些知识,其中也会对fgetc函数进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

fscanf函数的作用 fgetc函数

fscanf的用法

fprintf、fscanf的读写对象不是终端而是磁盘文件;

调用方式为:int fprintf(文件指针,格式字符串,输出表列)返回值:返回实际输出的字符数,

操作不成功返回EOF

int fscanf(文件指针,格式字符串,输入表列)返回值:返回输入的数据个数,操作不成功返回EOF

fprintf(fp,"%d,%6.2f", i, t)将整型变量 i和实型变量 t的值按%d和%6.2f的格式输出到fp所指向的文件中;若i=3,t=4.5,则输出到磁盘中的格式为:3, 4.50相应的,从文件中读取数据时,则应用:fscanf(fp,"%d,%f",&i,&t)

在运用fprintf与fscanf时,在向文件输出数据及从文件读取数据时,分隔符应该相一致。如下程序所示,该程序的功能是:用户输入8个整型数据,程序回显并把数据写到int.txt文件中,然后程序再从int.txt文件中读取数据,并显示出来。

fscanf函数的作用 fgetc函数

c语言文件操命令(函数)的作用

在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。

一、流式文件操作

这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:

typedef struct{

int level;

unsigned flags;

fscanf函数的作用 fgetc函数

char fd;

unsigned char hold;

int bsize;

unsigned char _FAR*buffer;

unsigned char _FAR*curp;

unsigned istemp;

short token;

} FILE;

FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能

fopen()打开流

fclose()关闭流

fputc()写一个字符到流中

fgetc()从流中读一个字符

fseek()在流中定位到指定的字符

fputs()写字符串到流

fgets()从流中读一行或指定个字符

fprintf()按格式输出到流

fscanf()从流中按格式读取

feof()到达文件尾时返回真值

ferror()发生错误时返回其值

rewind()复位文件定位器到文件开始处

remove()删除文件

fread()从流中读指定个数的字符

fwrite()向流中写指定个数的字符

tmpfile()生成一个临时文件流

tmpnam()生成一个唯一的文件名

下面就介绍一下这些函数

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

向流写一个字符,原型是int fputc(int c, FILE*stream);成功返回这个字符,失败返回EOF。

例:fputc('X',fp);

4.fgetc()

从流中读一个字符,原型是int fputc(FILE*stream);成功返回这个字符,失败返回EOF。

例:char ch1=fgetc(fp);

5. fseek()

此函数一般用于二进制模式打开的文件中,功能是定位到流中指定的位置,原型是int fseek(FILE*stream, long offset, int whence);如果成功返回0,参数offset是移动的字符数,whence是移动的基准,取值是

符号常量值基准位置

SEEK_SET 0文件开头

SEEK_CUR 1当前读写的位置

SEEK_END 2文件尾部

例:fseek(fp,1234L,SEEK_CUR);//把读写位置从当前位置向后移动1234字节(L后缀表示长整数)

fseek(fp,0L,2);//把读写位置移动到文件尾

6.fputs()

写一个字符串到流中,原型int fputs(const char*s, FILE*stream);

例:fputs("I Love You",fp);

7.fgets()

从流中读一行或指定个字符,原型是char*fgets(char*s, int n, FILE*stream);从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。

例:如果一个文件的当前位置的文本如下

Love,I Have

But........

如果用

fgets(str1,4,file1);

则执行后str1="Lov",读取了4-1=3个字符,而如果用

fgets(str1,23,file1);

则执行str="Love,I Have",读取了一行(不包括行尾的'n')。

8.fprintf()

按格式输入到流,其原型是int fprintf(FILE*stream, const char*format[, argument,...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了

例:fprintf(fp,"%2d%s",4,"Hahaha");

9.fscanf()

从流中按格式读取,其原型是int fscanf(FILE*stream, const char*format[, address,...]);其用法和scanf()相同,不过不是从控制台读取,而是从流读取罢了。

例:fscanf(fp,"%d%d",&x,&y);

10.feof()

检测是否已到文件尾,是返回真,否则返回0,其原型是int feof(FILE*stream);

例:if(feof(fp))printf("已到文件尾");

11.ferror()

原型是int ferror(FILE*stream);返回流最近的错误代码,可用clearerr()来清除它,clearerr()的原型是void clearerr(FILE*stream);

例:printf("%d",ferror(fp));

12.rewind()

把当前的读写位置回到文件开始,原型是void rewind(FILE*stream);其实本函数相当于fseek(fp,0L,SEEK_SET);

例:rewind(fp);

12.remove()

删除文件,原型是int remove(const char*filename);参数就是要删除的文件名,成功返回0。

例:remove("c:io.sys");

13.fread()

从流中读指定个数的字符,原型是size_t fread(void*ptr, size_t size, size_t n, FILE*stream);参数ptr是保存读取的数据,void*的指针可用任何类型的指针来替换,如char*、int*等等来替换;size是每块的字节数;n是读取的块数,如果成功,返回实际读取的块数(不是字节数),本函数一般用于二进制模式打开的文件中。

例:

char x[4230];

FILE*file1=fopen("c:msdos.sys","r");

fread(x,200,12,file1);//共读取200*12=2400个字节

14.fwrite()

与fread对应,向流中写指定的数据,原型是size_t fwrite(const void*ptr, size_t size, size_t n, FILE*stream);参数ptr是要写入的数据指针,void*的指针可用任何类型的指针来替换,如char*、int*等等来替换;size是每块的字节数;n是要写的块数,如果成功,返回实际写入的块数(不是字节数),本函数一般用于二进制模式打开的文件中。

例:

char x[]="I Love You";

fwire(x, 6,12,fp);//写入6*12=72字节

将把"I Love"写到流fp中12次,共72字节

15.tmpfile()

其原型是FILE*tmpfile(void);生成一个临时文件,以"w+b"的模式打开,并返回这个临时流的指针,如果失败返回NULL。在程序结束时,这个文件会被自动删除。

例:FILE*fp=tmpfile();

16.tmpnam();

其原型为char*tmpnam(char*s);生成一个唯一的文件名,其实tmpfile()就调用了此函数,参数s用来保存得到的文件名,并返回这个指针,如果失败,返回NULL。

例:tmpnam(str1);

二、直接I/O文件操作

这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,而上篇所说流式文件操作是通过缓冲区来进行;流式文件操作是围绕一个FILE指针来进行,而此类文件操作是围绕一个文件的“句柄”来进行,什么是句柄呢?它是一个整数,是系统用来标识一个文件(在WINDOWS中,句柄的概念扩展到所有设备资源的标识)的唯一的记号。此类文件操作常用的函数如下表,这些函数及其所用的一些符号在io.h和fcntl.h中定义,在使用时要加入相应的头文件。

函数说明

open()打开一个文件并返回它的句柄

close()关闭一个句柄

lseek()定位到文件的指定位置

read()块读文件

write()块写文件

eof()测试文件是否结束

filelength()取得文件长度

rename()重命名文件

chsize()改变文件长度

下面就对这些函数一一说明:

1.open()

打开一个文件并返回它的句柄,如果失败,将返回一个小于0的值,原型是int open(const char*path, int access [, unsigned mode]);参数path是要打开的文件名,access是打开的模式,mode是可选项。表示文件的属性,主要用于UNIX系统中,在DOS/WINDOWS这个参数没有意义。其中文件的打开模式如下表。

符号含义符号含义符号含义

O_RDONLY只读方式 O_WRONLY只写方式 O_RDWR读/写方式

O_NDELAY用于UNIX系统 O_APPEND追加方式 O_CREAT如果文件不存在就创建

O_TRUNC把文件长度截为0 O_EXCL和O_CREAT连用,如果文件存在返回错误 O_BINARY二进制方式

O_TEXT文本方式

对于多个要求,可以用"|"运算符来连接,如O_APPEND|O_TEXT表示以文本模式和追加方式打开文件。

例:int handle=open("c:msdos.sys",O_BINARY|O_CREAT|O_WRITE)

2.close()

关闭一个句柄,原型是int close(int handle);如果成功返回0

例:close(handle)

3.lseek()

定位到指定的位置,原型是:long lseek(int handle, long offset, int fromwhere);参数offset是移动的量,fromwhere是移动的基准位置,取值和前面讲的fseek()一样,SEEK_SET:文件首部;SEEK_CUR:文件当前位置;SEEK_END:文件尾。此函数返回执行后文件新的存取位置。

例:

lseek(handle,-1234L,SEEK_CUR);//把存取位置从当前位置向前移动1234个字节。

x=lseek(hnd1,0L,SEEK_END);//把存取位置移动到文件尾,x=文件尾的位置即文件长度

4.read()

从文件读取一块,原型是int read(int handle, void*buf, unsigned len);参数buf保存读出的数据,len是读取的字节。函数返回实际读出的字节。

例:char x[200];read(hnd1,x,200);

5.write()

写一块数据到文件中,原型是int write(int handle, void*buf, unsigned len);参数的含义同read(),返回实际写入的字节。

例:char x[]="I Love You";write(handle,x,strlen(x));

7.eof()

类似feof(),测试文件是否结束,是返回1,否则返回0;原型是:int eof(int handle);

例:while(!eof(handle1)){……};

8.filelength()

返回文件长度,原型是long filelength(int handle);相当于lseek(handle,0L,SEEK_END)

例:long x=filelength(handle);

9.rename()

重命名文件,原型是int rename(const char*oldname, const char*newname);参数oldname是旧文件名,newname是新文件名。成功返回0

例:rename("c:config.sys","c:config.w40");

10.chsize();

改变文件长度,原型是int chsize(int handle, long size);参数size表示文件新的长度,成功返回0,否则返回-1,如果指定的长度小于文件长度,则文件被截短;如果指定的长度大于文件长度,则在文件后面补''。

例:chsize(handle,0x12345);

C语言中各种函数的具体作用,要详细点的

字符处理函数

本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换

头文件 ctype.h

函数列表<>

函数类别函数用途详细说明

字符测试是否字母和数字 isalnum

是否字母 isalpha

是否控制字符 iscntrl

是否数字 isdigit

是否可显示字符(除空格外) isgraph

是否可显示字符(包括空格) isprint

是否既不是空格,又不是字母和数字的可显示字符 ispunct

是否空格 isspace

是否大写字母 isupper

是否16进制数字(0-9,A-F)字符 isxdigit

字符大小写转换函数转换为大写字母 toupper

转换为小写字母 tolower

地区化

本类别的函数用于处理不同国家的语言差异。

头文件 local.h

函数列表

函数类别函数用途详细说明

地区控制地区设置 setlocale

数字格式约定查询国家的货币、日期、时间等的格式转换 localeconv

数学函数

本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51)

头文件 math.h

函数列表

函数类别函数用途详细说明

错误条件处理定义域错误(函数的输入参数值不在规定的范围内)

值域错误(函数的返回值不在规定的范围内)

三角函数反余弦 acos

反正弦 asin

反正切 atan

反正切2 atan2

余弦 cos

正弦 sin

正切 tan

双曲函数双曲余弦 cosh

双曲正弦 sinh

双曲正切 tanh

指数和对数指数函数 exp

指数分解函数 frexp

乘积指数函数 fdexp

自然对数 log

以10为底的对数 log10

浮点数分解函数 modf

幂函数幂函数 pow

平方根函数 sqrt

整数截断,绝对值和求余数函数求下限接近整数 ceil

绝对值 fabs

求上限接近整数 floor

求余数 fmod

本分类函数用于实现在不同底函数之间直接跳转代码。头文件 setjmp.h io.h

函数列表

函数类别函数用途详细说明

保存调用环境 setjmp

恢复调用环境 longjmp

信号处理

该分类函数用于处理那些在程序执行过程中发生例外的情况。

头文件 signal.h

函数列表

函数类别函数用途详细说明

指定信号处理函数 signal

发送信号 raise

可变参数处理

本类函数用于实现诸如printf,scanf等参数数量可变底函数。

头文件 stdarg.h

函数列表

函数类别函数用途详细说明

可变参数访问宏可变参数开始宏 va_start

可变参数结束宏 va_end

可变参数访问宏访问下一个可变参数宏 va_arg

输入输出函数

该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以“流”的方式实现

头文件 stdio.h

函数列表

函数类别函数用途详细说明

文件操作

删除文件 remove

修改文件名称 rename

生成临时文件名称 tmpfile

得到临时文件路径 tmpnam

文件访问关闭文件 fclose

刷新缓冲区 fflush

打开文件 fopen

将已存在的流指针和新文件连接 freopen

设置磁盘缓冲区 setbuf

设置磁盘缓冲区 setvbuf

格式化输入与输出函数格式输出 fprintf

格式输入 fscanf

格式输出(控制台) printf

格式输入(控制台) scanf

格式输出到缓冲区 sprintf

从缓冲区中按格式输入 sscanf

格式化输出 vfprintf

格式化输出 vprintf

格式化输出 vsprintf

字符输入输出函数输入一个字符 fgetc

字符串输入 fgets

字符输出 fputc

字符串输出 fputs

字符输入(控制台) getc

字符输入(控制台) getchar

字符串输入(控制台) gets

字符输出(控制台) putc

字符输出(控制台) putchar

字符串输出(控制台) puts

字符输出到流的头部 ungetc

直接输入输出直接流读操作 fread

直接流写操作 fwrite

文件定位函数得到文件位置 fgetpos

文件位置移动 fseek

文件位置设置 fsetpos

得到文件位置 ftell

文件位置复零位 remind

错误处理函数错误清除 clearerr

文件结尾判断 feof

文件错误检测 ferror

得到错误提示字符串 perror

实用工具函数

本分类给出了一些函数无法按以上分类,但又是编程所必须要的。

头文件 stdlib.h

函数列表

函数类别函数用途详细说明

字符串转换函数字符串转换为整数 atoi

字符串转换为长整数 atol

字符串转换为浮点数 strtod

字符串转换为长整数 strtol

字符串转换为无符号长整型 strtoul

伪随机序列产生函数产生随机数 rand

设置随机函数的起动数值 srand

存储管理函数分配存储器 calloc

释放存储器 free

存储器分配 malloc

重新分配存储器 realloc

环境通信中止程序 abort

退出程序执行,并清除环境变量 atexit

退出程序执行 exit

读取环境参数 getenv

程序挂起,临时执行一个其他程序 system

搜索和排序工具二分查找(数据必须已排序) bsearch

快速排序 qsort

整数运算函数求绝对值 abs

div

得到除法运算底商和余数

求长整形底绝对值 labs

求长整形除法的商和余数 ldiv

多字节字符函数得到多字节字符的字节数 mblen

得到多字节字符的字节数 mbtowc

多字节字符转换 wctomb

多字节字符的字符串操作将多字节串转换为整数数组 mbstowcs

将多字节串转换为字符数组 mcstowbs

字符串处理

本分类的函数用于对字符串进行合并、比较等操作

头文件 string.h

函数列表

函数类别函数用途详细说明

字符串拷贝块拷贝(目的和源存储区不可重叠) memcpy

块拷贝(目的和源存储区可重叠) memmove

串拷贝 strcpy

按长度的串拷贝 strncpy

字符串连接函数串连接 strcat

按长度连接字符串 strncat

串比较函数块比较 memcmp

字符串比较 strcmp

字符串比较(用于非英文字符) strcoll

按长度对字符串比较 strncmp

字符串转换 strxfrm

字符与字符串查找字符查找 memchr

字符查找 strchr

字符串查找 strcspn

字符串查找 strpbrk

字符串查找 strspn

字符串查找 strstr

字符串分解 strtok

杂类函数字符串设置 memset

错误字符串映射 strerror

求字符串长度 strlen

日期和时间函数

本类别给出时间和日期处理函数

头文件 time.h

函数列表

函数类别函数用途详细说明

时间操作函数得到处理器时间 clock

得到时间差 difftime

设置时间 mktime

得到时间 time

时间转换函数得到以ASCII码表示的时间 asctime

得到字符串表示的时间 ctime

得到指定格式的时间 strftime

函数库未来的发展方向

本部分用于说明各类别函数库在将来如何发展。

序号库类别头文件详细说明

1错误处理 errno.h

2字符处理 ctype.h

3地区化 local.h

4数学函数 math.h

5信号处理 signal.h

6输入输出 stdio.h

7实用工具程序 stdlib.h

8字符串处理 string.h

fscanf函数的作用和fgetc函数的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

ai换脸工具有哪些软件 单机ai换脸工具有哪些软件ppt素材模板全套免费(ppt模板免费下载 素材)