使用文件的方式共有12种,下面给出了它们的符号和意义。 

文件使用方式        意 义
“rt”      只读打开一个文本文件,只允许读数据 
“wt”      只写打开或建立一个文本文件,只允许写数据
“at”      追加打开一个文本文件,并在文件末尾写数据
“rb”      只读打开一个二进制文件,只允许读数据
“wb”       只写打开或建立一个二进制文件,只允许写数据
“ab”       追加打开一个二进制文件,并在文件末尾写数据
“rt+”      读写打开一个文本文件,允许读和写
“wt+”      读写打开或建立一个文本文件,允许读写
“at+”      读写打开一个文本文件,允许读,或在文件末追加数 据
“rb+”      读写打开一个二进制文件,允许读和写 
“wb+”      读写打开或建立一个二进制文件,允许读和写
“ab+”      读写打开一个二进制文件,允许读,或在文件末追加数据
 

对于文件使用方式有以下几点说明:

1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写

 

简单样例代码:

 

#include <stdio.h>
#include<stdlib.h>
int main()
{
	FILE *fp;
	char ch;
	scanf("%c", &ch);
	//打开
	/*
	带后缀+则都可以为读写;带后缀b全变二进制文件;
	r,只读,文本,不存在则出错;
	w,只写,文本,不存在则新建文件;
	a,尾部追加,文本,不存在则出错;
	*/
	

	//顺序写
	if ((fp=fopen("test.txt","w+"))==NULL)
	{
		printf("文件写未打开\n");
		exit(0);
	}
	while (ch != '0')//遇到0,回车结束
	{
		fputc(ch, fp);//写
		ch = getchar();
	}
	//关闭
	fclose(fp);//用一次就要关一次!连着下面用会出错的
	printf("文件已关闭\n");


	//顺序读
	if ((fp = fopen("test.txt", "r+")) == NULL)//fopen("test","r+")返回值是指向文件的指针
	{
		printf("文件读未打开\n");
		exit(0);
	}
	while (!feof(fp))
	{
		ch = fgetc(fp);//读
		putchar(ch);//显示
	}
	//关闭
	fclose(fp);
	printf("文件已关闭\n");
	

	return 0;
}

 

feof(file stream )文件指针到达文件末尾
!feof(fp) 表示没有到达末尾
注意:这个末尾是最后一个字符的下一个位置

 

在C语言中提供了多种文件读写的函数: 
·字符读写函数 :fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf

 

字符读写函数fgetc和fputc

 

一、读字符函数fgetc

  fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为: 字符变量=fgetc(文件指针); 例如:ch=fgetc(fp);其意义是从打开的文件fp中读取一个字符并送入ch中。

二、写字符函数fputc

  fputc函数的功能是把一个字符写入指定的文件中,函数调用的 形式为: fputc(字符量,文件指针); 其中,待写入的字符量可以是字符常量或变量,例如:fputc('a',fp);其意义是把字符a写入fp所指向的文件中。

 

字符串读写函数fgets和fputs

一、读字符串函数fgets

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

二、写字符串函数fputs

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

 


/*创建时间:2017‎年‎3‎月‎2‎日,‏‎20:22:25,“数据结构.c”*/
#include<stdio.h>
void readtxt()
{
	int i = 0, j = 0;
	int a[100];
	FILE *fp;
	if ((fp = fopen("in.txt", "rt")) == NULL)//从和.cpp在同一个文件夹下的“in.txt”的文件进行读取
	{
		printf("error!\n");
		getch();
		exit(1);
	}
	while (!feof(fp))
	{
		fscanf(fp, "%d", &a[i]); i++;//读取并放在数组里。比如txt里存的是“0 1 2 3”【最后一位不能是空格】
	}
	for (j = 0; j < i; j++)	printf("%d ", a[j]);//从数组输出。
	fclose(fp);
}

void main()
{
	readtxt();
}