C语言基本教程(三)输入输出函数及节制流程语句(9)
当前位置:以往代写 > C/C++ 教程 >C语言基本教程(三)输入输出函数及节制流程语句(9)
2019-06-13

C语言基本教程(三)输入输出函数及节制流程语句(9)

C语言基本教程(三)输入输出函数及节制流程语句(9)

二、有关文件操纵的函数
本节所讲的文件读写函数均是指顺序读写,即读写了一条信息后,指针自动加1。下面别离先容写操纵函数和读操纵函数。
1.文件的顺序写函数
fprintf()、fputs()和fputc()函数
函数fprintf()、fputs()和fputc()均为文件的顺序写操纵函数,其挪用名目如下:
int fprintf(FILE *stream, char *format, <variable-list>);
int fputs(char *string, FILE *steam);
int fputc(int ch, FILE *steam);
上述三个函数的返回值均为整型量。fprintf()函数的返回值为实际写入文件中的字罕个数(字节数)。假如写错误,则返回一个负数,fputs()函数返回0时表白将string指针所指的字符串写入文件中的操纵乐成,返回非0时,表白写操纵失败。fputc()函数返回一个向文件所写字符的值,此时写操纵乐成,不然返回EOF(文件竣事竣事其值为-1,在stdio.h中界说)暗示写操纵错误。
fprintf( ) 函数中名目化的划定与printf( ) 函数沟通,所差异的只是fprintf()函数是向文件中写入。而printf()是向屏幕输出。
下面先容一个例子, 运行后产后一个test.dat的文件。
例11:
#include<stdio.h>
main()
{
char *s="That’s good news"); /*界说字符串指针并初始化*/
int i=617; /*界说整型变量并初始化*/
FILE *fp; /*界说文件指针*/
fp=fopne("test.dat", "w"); /*成立一个文字文件只写*/
fputs("Your score of TOEFLis", fp);/*向所建文件写入一串字符*/
fputc(‘:’, fp); /*向所建文件写冒号:*/
fprintf(fp, "%d\n", i); /*向所建文件写一整型数*/
fprintf(fp, "%s", s); /*向所建文件写一字符串*/
fclose(fp); /*封锁文件*/
}
用DOS的TYPE呼吁显示TEST.DAT的内容如下所示:
屏幕显示
Your score of TOEFL is: 617
That’s good news
2. 文件的顺序读操纵函数
fscanf()、fgets()和fgetc()函数
函数fscanf()、fgets()和fgetc()均为文件的顺序读操纵函数,其挪用名目如下:
int fscanf(FILE *stream, char *format, <address-list>);
char fgets(char *string, int n, FILE *steam);
int fgetc(FILE *steam);
fscanf()函数的用法与scanf()函数相似,只是它是从文件中读到信息。fscanf()函数的返回值为EOF(即-1),表白读错误,不然读数据乐成。fgets()函数从文件中读取至多n-1个字符(n用来指定字符数),并把它们放入string指向的字符串中,在读入之后自动向字符串未尾加一个空字符,读乐成返回string指针,失败返回一个空指针。fgetc()函数返回文件当前位置的一个字符,读错误时返回EOF。
下面措施读取例11发生的test.dat文件, 并将读出的功效显示在屏幕上。
例12
#include<stdio.h>
main()
{
char *s, m[20];
int i;
FILE *fp;
fp=fopen("test.dat", "r"); /*打开文字文件只读*/
fgets(s, 24, fp); /*从文件中读取23个字符*/
printf("%s", s); /*输出所读的字符串*/
fscanf(fp, "%d", &i); /*读取整型数*/
printf("%d", i); /*输出所读整型数*/
putchar(fgetc(fp)); /*读取一个字符同时输出*/
fgets(m, 17, fp); /*读取16个字符*/
puts(m); /*输出所读字符串*/
fclose(fp); /*封锁文件*/
getch(); /*期待任一键*/
}
运行后屏幕显示:
Your score of TOEFL is: 617
That’s good news
假如将上例中fscanf(fp, "%d", &i)改为fscanf(fp, "%s", m),再将其后的输出语句改为printf("%s", m),则可得出同样的功效。由此可见Turbo C2. 0中只要是读文字文件,则岂论是字符照旧数字都将按其ASCII值处理惩罚。别的还要说明的一点就是fscanf()函数读到空缺符时,便自动竣事,在利用时要出格留意。

    关键字:

在线提交作业