fscanf函数和fprintf函数、fgets函数和fputs函数、fread函数和fwrite函数

  1. fscanf 函数和 fprintf 函数

  1.1 fscanf 函数

  fscanf 函数只能从文本文件中按格式输入。fscanf 函数和 scanf 函数相似,只是输入的对象是磁盘上文本文件的数据。函数的调用形式如下:

    fscanf( 文件指针,格式控制字符串,输入项表 );

  例如,若文件指针 fp 指向一个已打开的文本文件,a、b 分别为整型变量,则以下语句从 fp 所指的文件中读入两个整数放入变量 a 和 b 中:

    fscanf( fp, "%d%d", &a, &b );

  注意:文件中的两个整数之间用空格(跳格符、回车符)隔开。

    fscanf( stdin, "%d%d", &a, &b );

  等价于:

    scanf( “%d%d”, &a, &b );

  因为文件指针 stdin 代表终端键盘。

  1.2 fprintf 函数

  fprintf 函数按格式将内存中的数据转换成对应的字符,并以 ASCII 代码形式输出到文本文件中。fprintf 函数和 printf 函数相似,只是输出的内容将按格式存放在磁盘的文本文件中。函数的调用形式如下:

    fprintf( 文件指针,格式控制字符串,输出项表);

  例如,若文件指针 fp 指向一个已打开的文本文件,x、y 分别为整型变量,则以下语句将把 x 和 y 两个整型变量中的整数按 %d 格式输出到 fp 所指的文件中。

    fprintf( fp, "%d %d", x, y );

  注意:为了便于以后读入,两个数之间应当用空格隔开。同时为了以后便于读入,最好不要输出附加的其他字符串。

    fprintf( stdout, "%d %d", x, y);

  等价于:

    printf("%d %d", x, y);

  文件指针 stdout 代表终端屏幕。

  2. fgets 函数和 fputs 函数

  2.1 fgets 函数

  fgets 函数用来从文件中读入字符串。fgets 函数的调用形式如下:

    fgets( str, n, fp );

  此处,fp 是文件指针,str 是存放字符串的起始地址,n 是一个 int 型变量。函数的功能是从 fp 所指文件中读入 n-1 个字符放入以 str 为起始地址的空间内。如果在未读满 n-1 个字符时,已读到一个换行符或一个 EOF(文件结束标志),则结束本次读操作,读入字符串的最后包含读到的换行符。因此,调用 fgets 函数时,最多能读入 n-1 个字符。读入结束后,系统将自动在最后加 ‘\0‘,并以 str 作为函数值返回。

  2.2 fputs 函数

  fputs 函数用来把字符串输出到文件中。fputs 函数的调用形式如下:

    fputs( str, fp );

  此处,fp 是文件指针;str 是待输出的字符串,可以是字符串常量、指向字符串的指针或存放字符串的字符数组名等。用此函数进行输出时,字符串中最后的 ‘\0‘ 并不输出,也不自动加 ‘\n‘。输出成功函数值为正整数,否则为 -1(EOF)。

  需要注意的是:调用函数输出字符串时,文件中个字符串将首尾相接,它们之间将不存在任何间隔符。为了便于读入,在输出字符串时,应当注意人为地加入诸如 "\n" 这样的字符串。

  3. fread 函数和 fwrite 函数

  fread 函数和 fwrite 函数分别用来读、写二进制文件。它们的调用形式如下:

    fread( buffer, size, count, fp );

    fwrite( buffer, size, count, fp );

  其中,buffer 是数据块的指针,对 fread 来说,它是内存块的首地址,输入的数据存入此内存块中;对于 fwrite 来说,它是准备输出的数据块的起始地址。size 表示每个数据块的字节数。count 用来指定读、写一次,输入或输出数据块的个数(每个数据块具有 size 字节)。

  例如有以下结构体:

    struct st

    {

      char num[8];

      float mk[5];

    } pers[30];

  假设 pers 数组每个元素包含有学生的学号和五门课的成绩,并假设 pers 数组的30个元素中都已有值,文件指针 fp 所指文件已正确打开,则执行以下循环将把这30个元素中的数据输出到 fp 所指文件中。

    for( i = 0; i < 30; i++ )

    {

      fwrite( &pers[i], sizeof( struct st ), 1, fp );

    }

  以上 for 循环中,每执行一次 fwrite 函数调用,就从 &pers[i] 地址开始输出由第三个参数指定的“1”个数据块,每个数据块含有 sizeof( struct st ) 个字节,也就是一次输出一个结构体变量中的值。

  也可以用以下步骤从上面建立的文件中再次将每个学生的数据逐个读入到 pers 数组中。这时,文件必须为“读”而打开。

    i = 0;

    fread( &pers[i], sizeof( struct st ), 1, fp );

    while ( !feof( fp ) )

    {

      i++;

      fread( &pers[i], sizeof( struct st ), 1, fp );

    }

时间: 2024-08-05 20:37:38

fscanf函数和fprintf函数、fgets函数和fputs函数、fread函数和fwrite函数的相关文章

函数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.

fprintf与fwrite函数用法与差异

在C语言中有两个常见的保存文件的函数:fprintf 与 fwrite.其主要用法与差异归纳如下: 一.fprintf函数. 1.以文本的形式保存文件.函数原型为 int fprintf(FILE* stream,const char* format,[argument]),用法类似于printf函数,返回值是输出的字符数,发生错误时返回一个负值. 2.对应的读取函数为fscanf().函数原型为int fscanf(FILE* stream,const char* format,[argume

【转】fread函数和fwrite函数

1.函数功能   用来读写一个数据块. 2.一般调用形式   fread(buffer,size,count,fp);   fwrite(buffer,size,count,fp); 3.说明   (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址.对fwrite来说,是要输出数据的地址.   (2)size:要读写的字节数:   (3)count:要进行读写多少个size字节的数据项:   (4)fp:文件型指针. 注意:1 完成次写操(fwrite())作后必须关闭流(

fgets和fputs,fread和fwrite,fscanf,和fprintf用法小结

一.fgets(str,n,fp); fgets(str,n,fp);就是从fp指向的文件中读取n-1个字符送入字符数组str中. 说明:1.在读出n-1个字符之前,如果遇到了换行符或者EOF,则读出结束. 2.fgets函数也有返回值,其返回值是字符数组的首地址. 二.fputs("abcd",fp); fputs("abcd",fp):把字符串"abcd"写入所指的文件中. 三.C语言还提供了整块数据的读写函数,可以用来读写一组数据,如一个数

关于二进制文件fread、fwrite函数使用读写

环境:vs2013 语言:C语言 时间:2015年3月10日 功能:实现二进制文件的读写实例 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #define FILENAME "d:/studentInfo" #define COUNT 5 typedef struct { char name[10]; short Math; short Chinese; short

用函数实现登陆功能(三次机会),然后在主函数中根据调用后的结果判断 登陆成功与否。

/*3.用函数实现登陆功能(三次机会),然后在主函数中根据调用后的结果判断登陆成功与否.*/#include <string.h>int numb(char use[] ,char password[] ){ if((strcmp(use,"zhouyi")==0)&&(strcmp(password,"nb")==0)) { return 1; } else { return 0; } } #include <stdio.h>

PHP fwrite() 函数与 file_put_contents() 函数的比较

两个 PHP 函数都可以把字符串保存到文件中,fwrite() 函数的格式是: int fwrite ( resource handle , string string [ , int length] ) 它只能写入字符串. file_put_contents() 函数的格式是: int file_put_contents ( string $filename, mixed $data [, int $flags [, resource $context]] ) 其中 file 是文件路径,da

使用函数指针,完成一个sort()函数,能对任何类型的数组元素进行排序: 回调函数 以及 memcpy ()原型实现

进来复习了一下C语言指针,一直没有写过太多关于函数指针的代码,而且对回调函数的理解一直都是在理论上,基本上没有太写过关于它的代码,进来得空,写了一个小程序加深下自己对回调函数和函数指针的理解. 问题描述: 编写一个sort()函数,使它能够对任何类型的数组元素进行排序. 下面是我写的代码: /* 使用函数指针的回调函数技巧,设计一个能排序int 和char 数组的sort()函数 */ #include<stdio.h> #include<stdlib.h> #include<

Javascript中,数学方法可以分成以下几类: constans(常数)、power functions(乘方函数)、trigonometic functions(三角函数)、rounding functions(舍入函数)、random numbers(随机数字)

在Javascript中,数学方法可以分成以下几类: constans(常数).power functions(乘方函数).trigonometic functions(三角函数).rounding functions(舍入函数).random numbers(随机数字) 常数和乘方函数 Math.E 自然对数的底(为常数) 2.718 Math.LN10 10的自然对数 2.302 Math.LN2 2的自然对数 0.693 Math.PI 圆周率 3.1415 Math.SQRT1_2 1/