C语言复习_顺序读写数据文件

顺序读写数字文件

1.1 怎样向文件读写字符

字符读写函数是以字符(字节)为单位的读写函数。 每次可从文件读出或向文件写入一个 字符。

1.读字符函数 fgetc

2.fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:
字符变量=fgetc(文件指针);
例如:

 ch=fgetc(fp);

3.其意义是从打开的文件 fp 中读取一个字符并送入 ch 中。 对于 fgetc 函数的使用有以下几点说明:
(1) 在 fgetc 函数调用中,读取的文件必须是以读或读写方式打开的。
(2) 读取字符的结果也可以不向字符变量赋值, 例如: fgetc(fp); 但是读出的字符不能保存。
(3) 在文件内部有一个位置指针。用来指向文件的当前读写字节。在文件打开时,该指 针总是指向文件的第一个字节。使用 fgetc 函数后,该位置指针将向后移动一个字 节。 因此可连续多次使用 fgetc 函数,读取多个字符。应注意文件指针和文件内部 的位置指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要 不重新赋值,文件指针的值是不变的。文件内部的位置指针用以指示文件内部的当 前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由 系统自动设置的。

1.2 写字符函数 fputc

fputc 函数的功能是把一个字符写入指定的文件中,函数调用的形式为:
fputc(字符量,文件指针);
其中,待写入的字符量可以是字符常量或变量,
例如:
fputc(‘a’,fp);
其意义是把字符 a 写入 fp 所指向的文件中。 对于 fputc 函数的使用也要说明几点: (1) 被写入的文件可以用写、读写、追加方式打开,用写或读写方式打开一个已存在的 文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容, 希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不 存在,则创建该文件。
(2) 每写入一个字符,文件内部位置指针向后移动一个字节。
(3) fputc 函数有一个返回值,如写入成功则返回写入的字符,否则返回一个 EOF。可用 此来判断写入是否成功

2.字符串读写函数 fgets 和 fputs

2.1 读字符串函数 fgets

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

    fgets(str,n,fp);

他的意义是从 fp 所指的文件中读出 n-1 个字符送入字符数组 str 中。
例:

 #include<stdio.h>
#include<Windows.h>
int main() 
{   
	FILE *fp;   
	char str[11];   
	if((fp=fopen("string.txt","rt"))==NULL)  
	{    
		printf("Can not open file strike any key exit!\n");
		system("pause");
	}  
	fgets(str,11,fp);  
	printf("\n%s\n",str);   
	fclose(fp);
	system("pause");
	return 0;
} 

在这里插入图片描述
本例定义了一个字符数组 str 共 11 个字节,在以读文本文件方式打开文件 string 后, 从中读出 10 个字符送入 str 数组,在数组最后一个单元内将加上’\0’,然后在屏幕上显示输 出 str 数组。
对 fgets 函数有两点说明:

  1. 在读出 n-1 个字符之前,如遇到了换行符或 EOF,则读出结束。
  2. fgets 函数也有返回值,其返回值是字符数组的首地址。

2.2 写字符串函数fputs

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

其意义是把字符串“abcd”写入 fp 所指的文件之中。

例:

#include<stdio.h> 
#include<Windows.h>
int main() 
{   
	FILE *fp;  
	char ch,st[20];   
	if((fp=fopen("string","at+"))==NULL)   
	{     
		printf("Can not open file strike any key exit!");    
		system("pause");
	}  
	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);
	system("pause");
	return 0;
} 

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值