第16章 输入/输出库:stdio.h 一个完整的计算机程序应具备输入/输出功能,C语言提供了输入/输出函数库stdio.h,来实现一些输入/输出操作。该函数库主要包括字符、字符串的输入输出等函数。 16.1 clearerr()——复位错误标志函数 clearerr()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\01

    clearerr()函数用于复位错误标志。

    语法

    void clearerr(FILE *p);

    clearerr()函数的语法参数说明如下:

    参数p为指向流中文件的结束标记和错误标记。

    clearerr()函数没有返回值。

    示例

    本示例演示用clearerr()函数将p指向的文件流所用的错误标志清除,使文件顺利执行。其具体代码如下:

    img569

    运行结果如图16.1所示。

    img570

    图16.1 使用cleareer()函数复位流中错误标志 16.2 fclose()——关闭流函数 fclose()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\02

    fclose()函数用于关闭流文件。

    语法

    int fclose(FILE *p);

    fclose()函数的语法参数说明如下:

    参数p为指向要关闭文件的指针。

    fclose()函数的返回值:执行成功返回0,否则返回EOF(-1)。

    示例

    本示例演示用fclose()函数关闭一个打开的文件1.txt。其具体代码如下:

    img571

    运行程序,首先为字符数组分配内存,然后用fopen()函数打开文件1.txt,调用fwrite()函数将字符串写入文件,最后调用fclose()函数关闭文件。 16.3 feof()——检测流上的文件结束符函数 feof()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\03

    feof()函数用于检测流上的文件结束符。

    语法

    int feof(FILE *p);

    feof()函数的语法参数说明如下:

    参数p为需要检测的流。

    feof()函数的返回值:检测成功返回非0,否则返回0。

    示例

    本示例演示用feof()函数检测p所指向的文件1.txt结束标志,并根据判断输出错误信息。其具体代码如下:

    img572

    运行程序,首先打开文件1.txt,调用fgetc()函数从1.txt文件中读取一个字符,然后调用feof()函数检测文件是否结束,若结束,则显示信息:“We have reached end-of-file”,最后关闭文件。 16.4 ferror()——检测流上的错误函数 ferror()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\04

    ferror()函数用于检测流上的错误。

    语法

    int ferror(FILE *p);

    ferror()函数的语法参数说明如下:

    参数p为要检测的流。

    ferror()函数的返回值:检测到错误返回非0,否则返回0。

    示例

    本示例演示用ferror()函数检查p所指文件1.txt中有无读写错误,若有错误,将错误信息输出。其具体代码如下:

    img573

    运行结果如图16.2所示。

    img574

    图16.2 使用ferror()函数检测流上错误 16.5 fflush()——清除流函数 fflush()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\05

    fflush()函数用于清除流,即清除文件缓冲区,当文件以写的方式打开时,将缓冲区内容写入文件。

    语法

    int fflush(FILE *p);

    fflush()函数的语法参数说明如下:

    参数p为要清除的文件流。

    fflush()函数的返回值:刷新成功返回0;指定的流没有缓冲区域或只读打开时也返回0;否则返回EOF并指出一个错误。

    示例

    本示例演示用fflush()函数将缓冲区的内容写入文件1.txt中。其具体代码如下:

    img575

    img576

    程序运行结果如图16.3所示。

    img577

    图16.3 使用fflush()函数清除文件流 16.6 fgetc()——从流中读取字符函数 fgetc()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\06

    fgetc()函数用于从流中读取字符。

    语法

    int fgetc(FILE *p);

    fgetc()函数的语法参数说明如下:

    参数p为要读取的流。

    fgetc()函数的返回值:读取的字符。

    示例

    本示例演示用fgetc()函数从p所指向的流中循环地读取下一个字符,直至读取到文件尾。其具体代码如下:

    img578

    运行结果如图16.4所示。

    img579

    图16.4 使用fgetc()函数读取流中字符 16.7 fgetchar()——从流中读取字符函数 fgetchar()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\07

    fgetchar()函数用于从流中读取字符。

    语法

    int fgetchar(void);

    fgetchar()函数没有参数。

    fgetchar()函数的返回值:要读取的字符。

    示例

    本示例演示用fgetchar()函数从控制台输入的字符串中读取一个字符,并输出这个字符。其具体代码如下:

    img580

    运行结果如图16.5所示。

    img581

    图16.5 使用fgetchar()函数读取流中字符 16.8 fgetpos()——取得当前文件句柄函数 fgetpos()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\08

    fgetpos()函数用于获取当前文件的句柄。

    语法

    int fgetpos(FILE *p);

    fgetpos()函数的语法参数说明如下:

    参数p为文件流。

    fgetpos()函数的返回值:执行成功返回0,否则返回非0。

    示例

    本示例演示用fgetpos()函数获取p所指向的文件1.txt的句柄。其具体代码如下:

    img582

    img583

    运行结果如图16.6所示。

    img584

    图16.6 使用fgetpos()函数获取当前文件句柄 16.9 fgets()——从流中读取字符函数 fgets()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\09

    fgets()函数用于从流中读取字符串。

    语法

    char fgets(char s, int n, FILE *p);

    fgets()函数的语法参数说明如下:

    参数s为要读取的字符串。

    参数n为要读取字符串的长度。

    参数p为要读取的流。

    fgets()函数的返回值:s的地址。

    示例

    本示例演示用fgets()函数从p指向的文件1.txt中读取字符串“good luck!”。其具体代码如下:

    img585

    img586

    运行结果如图16.7所示。

    img587

    图16.7 使用fgets()函数从文件中读取字符串 16.10 fopen()——打开流函数 fopen()函数

    实用程度:★★★★☆

    实例位置:配套资源\SL\16\10

    fopen()函数用于打开文件流。

    语法

    FILE fopen(char file, char *mode);

    fopen()函数的语法参数说明如下:

    参数file为要打开的文件。

    参数mode为打开文件的方式。

    fopen()函数的返回值:文件流。

    示例

    本示例演示用fopen()函数打开p指向的文件1.txt。其具体代码如下:

    img588

    img589

    运行程序,首先声明要写入文件的字符数组,然后使用fopen()函数打开文件1.txt,使用fwrite()函数写入字符串到文件1.txt,最后使用fclose()函数关闭文件。 16.11 fprintf()——将格式化内容输出到流函数 fprintf()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\11

    fprintf()函数用于以格式化形式将一个字符串写给指定的流。

    语法

    int fprintf(FILE p, char format[, arg, …]);

    fprintf()函数的语法参数说明如下:

    参数p为要输出的流。

    参数format为要输出的格式。

    fprintf()函数的返回值:输出字符的个数。

    示例

    本示例演示用fprintf()函数将“circumference”、“65000”、“3.14159”和“m”分别以不同的格式输出到流stream中。其具体代码如下:

    img590

    img591

    运行结果如图16.8所示。

    img592

    图16.8 使用fprintf()函数将给定内容格式化输出到流 16.12 fputchar()——输出字符到标准输出流(stdout)函数 fputchar()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\12

    fputchar()函数用于输出字符到标准输出流。

    语法

    int fputchar(char c);

    fputchar()函数的语法参数说明如下:

    参数c为要输出的字符。

    fputchar()函数的返回值:最后一个字符输出流。

    示例

    本示例演示用fputchar()函数输出字符“Good luck to you”到标准输出流中。其具体代码如下:

    img593

    img594

    运行结果如图16.9所示。

    img595

    图16.9 使用fputchar()函数将字符送到标准输出流中 16.13 fputs()——输出字符串到流中函数 fputs()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\13

    fputs()函数用于将字符串输入流中。

    语法

    int fputs(char s, FILE p);

    fputs()函数的语法参数说明如下:

    参数s为要输出的字符串。

    参数p为要输出的流。

    fputs()函数的返回值:成功返回非负值,若写入错误返回EOF。

    示例

    本示例演示用fputs()函数将字符串“Good luck!”输入文件1.txt中。其具体代码如下:

    img596

    img597

    运行结果如图16.10所示。

    img598

    图16.10 使用fputs()函数将字符串写入文件中 16.14 fread()——从流中读数据函数 fread()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\14

    fread()函数用于从流中读取信息。

    语法

    int fread(void bp, int m, int n, FILE p);

    fread()函数的语法参数说明如表16.1所示。

    表16.1 参数说明

    img599

    fread()函数的返回值:读取字符的数量,即n值。

    示例

    本示例演示用fread()函数从p所指向的流1.txt中读取字符串“Good luck to you!”。其具体代码如下:

    img600

    img601

    运行结果如图16.11所示。

    img602

    图16.11 使用fread()函数从流中读取字符串 16.15 freopen()——替换流函数 freopen()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\15

    freopen()函数用于替换文件中数据流。

    语法

    FILE freopen(char file, char mode, FILE p);

    freopen()函数的语法参数说明如下:

    参数file为要打开的文件。

    参数mode为文件打开的方式。

    参数p为文件指针。

    freopen()函数的返回值:成功返回非0值,否则返回0。

    示例

    本示例演示用freopen()函数将数据“This will go into a file”替换到一个新文件1.txt中。其具体代码如下:

    img603

    img604

    运行程序,在当前目录下生成文件1.txt,将输出的字符串重新写入文件1.txt中,结果如图16.12所示。

    img605

    图16.12 使用freopen()函数将数据流替换到新文件中 16.16 fscanf()——从流中执行格式化输入内容函数 fscanf()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\16

    fscanf()函数用于从流中执行格式化输入内容。

    语法

    int fscanf(FILE p, char format[, arg…]);

    fscanf()函数的语法参数说明如下:

    参数p为要输入的流。

    参数format为指定的格式。

    fscanf()函数的返回值:转换和存储输入字段的个数,若遇文件结束返回EOF。

    示例

    本示例演示了fscanf()函数的使用,采用该函数从标准输入流中读取指定格式的字符,并根据输入,输出信息。其具体代码如下:

    img606

    img607

    运行结果如图16.13所示。

    img608

    图16.13 使用fscanf()函数执行格式化输入字符 16.17 fseek()——重定位流上的文件指针函数 fseek()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\17

    fseek()函数用于在流上重新定位文件结构的位置。

    语法

    int fseek(FILE *p, long offset, int position);

    fseek()函数的语法参数说明如下:

    参数p为要重定位的流。

    参数offset为重定位的偏移量。

    参数position为重定位的位置。

    fseek()函数的返回值:成功返回0,出错或失败时返回非0值。

    示例

    本示例演示用fseek()函数将p所指向的文件指针重新定位到距离文件开头24个字节处。其具体代码如下:

    img609

    img610

    运行结果如图16.14所示。

    img611

    图16.14 使用fseek()函数重定位流上的文件指针 16.18 fsetpos()——定位流上的文件指针函数 fsetpos()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\18

    fsetpos()函数用于将文件指针定位在指定的位置上。

    语法

    int fsetpos(FILE p, const fpos_t pos);

    fsetpos()函数的语法参数说明如下:

    参数p为要定位的文件流。

    参数pos为要定位的指定位置。

    fsetpos()函数的返回值:成功返回0,否则返回非0。

    示例

    本示例演示用fsetpos()函数将文件指针p按照pos指定的位置在文件中定位。其具体代码如下:

    img612

    运行结果如图16.15所示。

    img613

    图16.15 使用fsetpos()函数定位文件指针 16.19 ftell()——返回当前文件指针函数 ftell()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\19

    ftell()函数用于返回当前文件指针位置。

    语法

    long ftell(FILE *p);

    ftell()函数的语法参数说明如下:

    参数p为需要返回指针的文件流。

    ftell()函数的返回值:当前文件指针的位置。

    示例

    本示例演示用ftell()函数返回p所指向的文件1.txt指针位置。其具体代码如下:

    img614

    运行结果如图16.16所示。

    img615

    图16.16 使用ftell()函数返回文件指针位置 16.20 fwrite()——写内容到流函数 fwrite()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\20

    fwrite()函数用于写内容到流中。

    语法

    int fwrite(void ptr, int n, int m, FILE p);

    fwrite()函数的语法参数说明如表16.2所示。

    表16.2 参数说明

    img616

    fwrite()函数的返回值:写入字符的数量,即m值。

    示例

    本示例演示用fwrite()函数向p所指向的文件1.txt中写入字符A。其具体代码如下:

    img617

    运行程序,将结构体成员赋的值使用fwrite()函数写入到1.txt文件中,结果如图16.17所示。

    img618

    图16.17 使用fwrite()函数向文件中写入数据 16.21 getc()——从流中取字符函数 getc()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\21

    getc()函数用于从流中读取字符。

    语法

    int getc(FILE *p);

    getc()函数的语法参数说明如下:

    参数p为要从中读取字符的文件流。

    getc()函数的返回值:要读取的字符。

    示例

    本示例演示用getc()函数从标准输入文件中读取一个字符并显示出来。其具体代码如下:

    img619

    运行结果如图16.18所示。

    img620

    图16.18 使用getc()函数从标准输入文件中读取一个字符 16.22 getchar()——从stdin流中读字符函数 getchar()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\22

    getchar()函数用于从标准输入文件中读取字符。

    语法

    int getchar(void);

    getchar()函数没有参数。

    getchar()函数的返回值:所读字符。

    示例

    本示例演示用getchar()函数从标准输入设备循环地读取下一个字符,并输出这些字符。其具体代码如下:

    img621

    运行结果如图16.19所示。

    img622

    图16.19 使用getchar()函数从标准输入文件中读取字符 16.23 getche()——从控制台取字符(带回显)函数 getche()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\23

    getche()函数用于读取控制台输入的字符,并显示出来。

    语法

    int getche(void);

    getche()函数没有参数。

    getche()函数的返回值:输入的字符。

    示例

    本示例演示用getche()函数从控制台读取输入字符,并将其进行显示。其具体代码如下:

    img623

    运行结果如图16.20所示。

    img624

    图16.20 使用getche()函数从控制台读取并显示输入的字符 16.24 gets()——从流中取字符函数 gets()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\24

    gets()函数用于从流中读取字符。

    语法

    char gets(char s);

    gets()函数的语法参数说明如下:

    参数s为从给定的文件中读取的字符串。

    gets()函数的返回值:参数s的值。

    示例

    本示例演示用gets()函数从键盘读取字符串,要求不超过30个字符,并将其输出。其具体代码如下:

    img625

    运行结果如图16.21所示。

    img626

    图16.21 使用gets()函数读取字符串 16.25 getw()——从流中取整数函数 getw()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\25

    getw()函数用于从流中取一整数。

    语法

    int getw(FILE *p);

    getw()函数的语法参数说明如下:

    参数p为要取整数的流。

    getw()函数的返回值:从流中取得的整数。

    示例

    本示例演示用getw()函数从p所指向的文件1.txt中读取整数。其具体代码如下:

    img627

    img628

    将ASCII码值113所对应的字符存放在文件1.txt中,运行结果如图16.22所示。

    img629

    图16.22 使用getw()函数从流中取整数 16.26 perror()——系统错误信息 perror()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\26

    perror()函数用于输出系统错误信息。

    语法

    void perror(char *s);

    perror()函数的语法参数说明如下:

    参数s为要输出的错误信息。

    perror()函数没有返回值。

    示例

    本示例演示用perror()函数企图以只读方式打开一个并不存在的文件1.dat并显示错误的信息。其具体代码如下:

    img630

    img631

    运行结果如图16.23所示。

    img632

    图16.23 使用perror()函数输出系统错误信息 16.27 printf()——格式化输出函数 printf()函数

    实用程度:★★★★★

    实例位置:配套资源\SL\16\27

    printf()函数用于格式化输出。

    语法

    int printf(char *format…);

    printf()函数的语法参数说明如下:

    参数format为要输出的格式。

    printf()函数的返回值:输出字符的个数。

    示例

    本示例演示用printf()函数将数字10按照十进制、八进制、十六进制的形式以及不同的长度进行输出。其具体代码如下:

    img633

    运行结果如图16.24所示。

    img634

    图16.24 使用printf()函数进行格式化输出 16.28 putc()——输出一个字符到流中函数 putc()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\28

    putc()函数用于输出一个字符到流中。

    语法

    int putc(int c, FILE *p);

    putc()函数的语法参数说明如下:

    参数c为用户指定的字符。

    参数p为要输出的流。

    putc()函数的返回值:读取到的字符。

    示例

    本示例演示用putc()函数向标准输出文件输出字符“Good Luck”。其具体代码如下:

    img635

    运行结果如图16.25所示。

    img636

    图16.25 使用putc()函数向标准输出文件输出字符 16.29 putchar()——在stdout上输出字符函数 putchar()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\29

    putchar()函数用于向标准输出文件上输出字符。

    语法

    int putchar(int c);

    putchar()函数的语法参数说明如下:

    参数c为要输出的字符。

    putchar()函数的返回值:输出的字符,即c值。

    示例

    本示例演示用putchar()函数输出字符串“Hello”并且在字符串输出完毕之后进行换行。其具体代码如下:

    img637

    运行结果如图16.26所示。

    img638

    图16.26 使用putchar()函数输出字符 16.30 puts()——将字符串送到流中函数 puts()函数

    实用程度:★★★★☆

    实例位置:配套资源\SL\16\30

    puts()函数用于输出一个字符串到屏幕上。

    语法

    int puts(char s) ;

    puts()函数的语法参数说明如下:

    参数s为要进行输出的字符串。

    puts()函数的返回值:成功返回非负值,若输出失败返回EOF。

    示例

    本示例演示用puts()函数将字符串常量和字符串变量输出到屏幕上,并将字符串的结束符“\0”转换为回车换行。其具体代码如下:

    img639

    运行结果如图16.27所示。

    img640

    图16.27 使用puts()函数输出字符串 16.31 putw()——将字符或字送到流中函数 putw()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\31

    putw()函数用于将字符或字送到文件流中。

    语法

    int putw(int w, FILE *p);

    putw()函数的语法参数说明如下:

    参数w为要输出字符的ASCII码值。

    参数p为要输出的文件流。

    putw()函数的返回值:输出的整数。

    示例

    本示例演示用putw()函数将字符输出到p所指向的文件1.dat中。其具体代码如下:

    img641

    运行结果如图16.28所示。

    img642

    图16.28 使用putw()函数将字符送到文件流中 16.32 rename()——重命名文件函数 rename()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\32

    rename()函数用于重命名文件。

    语法

    int rename(char oldname, char newname);

    rename()函数的语法参数说明如下:

    参数oldname为原来文件名。

    参数newname为改后的文件名。

    rename()函数的返回值:成功返回0,若出错返回非0。

    示例

    本示例演示用rename()函数将当前文件夹中建立的文件old.txt重命名为new.txt。其具体代码如下:

    img643

    运行程序,在当前目录下将已有的文件old.txt重命名为new.txt,输出结果如图16.29所示。

    img644

    图16.29 使用rename()函数重命名文件 16.33 remove()——删除文件函数 remove()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\33

    remove()函数用于删除指定文件。

    语法

    int remove(char *file);

    remove()函数的语法参数说明如下:

    参数file为要删除的文件名。

    remove()函数的返回值:成功返回0,若删除失败返回非0。

    示例

    本示例演示用remove()函数删除当前文件夹中的指定文件new.txt。其具体代码如下:

    img645

    运行程序,原来在当前目录下的文件new.txt已被删除,输出结果如图16.30所示。

    img646

    图16.30 使用remove()函数删除指定文件 16.34 rewind()——将文件指针重新指向流的开头函数 rewind()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\34

    rewind()函数用于将文件指针重新定位流的开头。

    语法

    int rewind(FILE *p);

    rewind()函数的语法参数说明如下:

    参数p为要操作的流。

    rewind()函数没有返回值。

    示例

    本示例演示用rewind()函数将文件指针fp重定位到文件开头,并清除文件的结束标志。其具体代码如下:

    img647

    运行结果如图16.31所示。

    img648

    图16.31 使用rewind()函数重定位文件指针 16.35 scanf()——格式化输入函数 scanf()函数

    实用程度:★★★★☆

    实例位置:配套资源\SL\16\35

    scanf()函数用于格式化输入。

    语法

    int scanf(char *format[, arg, …]);

    scanf()函数的语法参数说明如下:

    参数format为要输入的格式。

    scanf()函数的返回值:输入字符个数。

    示例

    本示例演示用scanf()函数从键盘上用指定的格式输入a和b的值。其具体代码如下:

    img649

    运行结果如图16.32所示。

    img650

    图16.32 使用scanf()函数得到用户输入的数据 16.36 setbuf()——把缓冲区与流相联函数 setbuf()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\36

    setbuf()函数用于将指定缓冲区与特定文件流相联,实现操作缓冲区时直接操作文件流的功能。

    语法

    void setbuf(FILE p, char bp);

    setbuf()函数的语法参数说明如下:

    参数p为要处理的流。

    参数bp为要处理的缓冲区。

    setbuf()函数没有返回值。

    示例

    本示例演示用setbuf()函数给标准文件流指定缓冲区outbuf。其具体代码如下:

    img651

    运行结果如图16.33所示。

    img652

    图16.33 使用setbuf()函数将缓冲区与流相联 16.37 setvbuf()——把缓冲区与流相关函数 setvbuf()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\37

    setvbuf()函数用于将缓冲区与流相关。

    语法

    int setvbuf(FILE p, char bp, int type, unsigned n);

    setvbuf()函数的语法参数说明如表16.3所示。

    表16.3 参数说明

    img653

    setvbuf()函数的返回值:关联成功返回0,否则返回非0。

    示例

    本示例演示用setvbuf()函数将缓冲区与流实现指定大小、指定类型的关联。其具体代码如下:

    img654

    运行结果如图16.34所示。

    img655

    图16.34 使用setvbuf()函数将缓冲区与流关联 16.38 sprintf()——将格式化数据输出到字符串中函数 sprintf()函数

    实用程度:★★★☆☆

    实例位置:配套资源\SL\16\38

    sprintf()函数用于将格式化数据写入字符串中。

    语法

    int sprintf(char s, char format [, arg, …]);

    sprintf()函数的语法参数说明如下:

    参数s为要输出的字符串。

    参数format为要输出的格式。

    sprintf()函数的返回值:字符串的字节数。

    示例

    本示例演示用sprintf()函数格式化字符M_PI输出到指定的字符串buffer中。其具体代码如下:

    img656

    运行结果如图16.35所示。

    img657

    图16.35 使用sprintf()函数格式化字符输出到字符串中 16.39 sscanf()——执行字符串中的格式化输入函数 sscanf()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\39

    sscanf()函数用于执行字符串中的格式化输入。

    语法

    int sscanf(char s, char format[, arg, …]);

    sscanf()函数的语法参数说明如下:

    参数s为保存所输入的字符串。

    参数format为输入的格式。

    sscanf()函数的返回值:已分配给字符串的空间数量。

    示例

    本示例演示用sscanf()函数以“%s”、“%c”、“%d”和“%f”的格式输入s1中的字符。其具体代码如下:

    img658

    运行结果如图16.36所示。

    img659

    图16.36 使用sscanf()函数格式化输入特定值 16.40 tmpfile()——以二进制方式打开暂存文件函数 tmpfile()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\40

    tmpfile()函数用于以二进制方式打开暂存文件。

    语法

    FILE *tmpfile(void);

    tmpfile()函数没有参数。

    tmpfile()函数的返回值:指向暂存文件的指针。

    示例

    本示例演示用tmpfile()函数创建一个暂存文件,将文件指针赋给tp,并以二进制方式将其打开。其具体代码如下:

    img660

    运行结果如图16.37所示。

    img661

    图16.37 使用tmpfile()函数创建一个暂存文件 16.41 tmpnam()——创建一个唯一的文件名函数 tmpnam()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\41

    tmpnam()函数用于创建一个唯一的文件名。

    语法

    char tmpnam(char sp);

    tmpnam()函数的语法参数说明如下:

    参数sp为所创建的文件名。

    tmpnam()函数的返回值:指向该文件名的指针。

    示例

    本示例演示用tmpnam()函数创建一个临时的文件名,且不同于任何已存在的有效的文件名。其具体代码如下:

    img662

    运行结果如图16.38所示。

    img663

    图16.38 使用tmpnam()函数创建一个唯一的文件名 16.42 ungetc()——把字符退回到输入流函数 ungetc()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\42

    ungetc()函数用于将字符退回到输入流。

    语法

    int ungetc(char c, FILE *p);

    ungetc()函数的语法参数说明如下:

    参数c为要退回的字符。

    参数p为要退回的输入流。

    ungetc()函数的返回值:字符c。

    示例

    本示例演示用ungetc()函数将非数字字符退回到输入流中。其具体代码如下:

    img664

    img665

    运行结果如图16.39所示。

    img666

    图16.39 使用ungetc()函数将字符退回到输入流中 16.43 ungetch()——把字符退回到键盘缓冲区函数 ungetch()函数

    实用程度:★★☆☆☆

    实例位置:配套资源\SL\16\43

    ungetch()函数用于把字符退回到键盘缓冲区。

    语法

    int ungetch(int c);

    ungetch()函数的语法参数说明如下:

    参数c为要退回的字符。

    ungetch()函数的返回值:字符c。

    示例

    本示例演示用ungetch()函数将非数字字符退回到键盘缓冲区中。其具体代码如下:

    img667

    img668

    运行结果如图16.40所示。

    img669

    图16.40 使用ungetch()函数将字符退回到键盘缓冲区中