目录
一、常见文件的基本操作
//重要的文件操作函数在最底下
1.打开与关闭文件函数
fopen 打开文件函数 (成功打开后指向该流的文件指针就会被返回,失败返回NULL)
FILE *fopen(const chat *filename,const char *mode);
fclose 关闭文件函数。(一定要记得关闭)
方法一:如打开一个D盘下code里的txt文件test.txt
FILE *fp;
fp=fopen("d:\\code\\test.txt","r");
方法二:
FILE *fp;
fp=fopen("d:/code/test.txt","r");
可以说这样就将fp指向了test这个文件。
方法一中,第一个表示转义字符,第二个表示根目录。
方法二改为“/“也可以。
用w要注意,会覆盖掉本来的信息。
但在dev C++中实验得可直接输入文本名打开(在同一目录下)
1.创建一个新文件夹
2.新建一个文本文档,在里面写上”Merry Christmas “。
( 此处输入中文或其他符号可能会被识别为乱码!!!)
3.新建一个.c文件放入刚才新建的文件夹中
4.复制下面这段代码并运行。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
FILE *fp; //声明文件
fp=fopen("yy.txt","r"); //以只读方式打开文件
if(fp==NULL)//一定要判断是否打开成功
{
printf("Fail to open the file!");
exit(0);
}
while(!feof(fp)) //判断是否到文件结尾
{
ch=fgetc(fp); //依次读取文本中一个个字符
printf("%c",ch);//可在显示屏上依次打印文件中字符
}
fclose(fp);
return 0;
}
5.我们运行发现
2.往文件里追加数据(录入数据)
1.复制这串代码
#include<stdio.h>
int main()
{
FILE *fp;
char ch;
if((fp=fopen("yy.txt","a+"))==NULL)
{
printf("Fail to open the file!\n");
exit(1);
}
printf("please input the data:\n");
do
{
ch=getchar(); //得到输入的字符;
fputc(ch,fp); //将得到的字符存入到文件中;
}while(ch!='\n');
printf("The data write to the file successfully!\n");
fclose(fp);
}
2.输入数字
3.用记事本打开文本文档
二、重要的文件操作函数。
1.常用函数
1.fgetc (由文件中读取一个字符)
- fgetc()从参数stream所指的文件中读取一个字符.若读到文件尾而无数据时便返回EOF.
- 字符读取函数fgetc()可从文件数据流中一次读取一个字符,然后读取光标移动到下一个字符,并逐步将文件的内容读出
- 返回值 : getc() 会返回读取到的字符,若返回 EOF 则表示到了文件尾
2.fputc(将一指定字符写入文件流中)
- fputc 会将参数c 转为 unsigned char 后写入参数 stream 指定的文件中.
- 被写入的文件可以用写、读写、追加方式打开,用写或读写方式,写入字符时是从文件首开始的.如需保留原有文件内容,希望写入的字符,被写入的文件若不存在,则创建该文件.
- 每写入一个字符,文件内部位置指针向后移动一个字节.
- fputc 函数有一个返回值,如写入成功则返回写入的字符,否则返回一个 EOF .可用此来判断写符,写入一个文件,再把该文件内容读出显示在屏幕上.
- 返回值: fputc() 会返回写入成功的字符,即参数 c.若返回 EOF 则代表写入失败.
3.fgets(由文件中读取一字符串)
说明: fgets() 用来从参数 stream 所指的文件内读入字符并存到参数 s 所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上 NULL 作为字符串结束.
返回值: gets() 若成功则返回 s 指针,返回 NULL 则表示有错误发生.
4.fputs(将一指定的字符串写入文件内)
说明: fputs() 用来将参数 s 所指的字符串写入到参数 stream 所指的文件内.
返回值: 若成功则返回写出的字符个数,返回 EOF 则表示有错误发生.
5.fprintf 与 fscanf(将指定字符写磁盘文件)
说明: 它们与 printf 和 scanf 函数相仿,都是格式化读写函数.不同的是:fprintf 和 fscanf 函数的读写对象不是终端(标准输入输出),而是磁盘文件.printf 函数是将内容输出到终端(屏幕),因此,fprintf 就是将内容输出到磁盘文件了
2.不常用函数
5.getc(由文件中读取一个字符)
- getc() 用来从参数 stream 所指的文件中读取一个字符.若读到文件尾而无数据时便返回 EOF
- getc() 与 fgetc() 作用相同,但 getc() 为宏定义,非真正的函数调用.
6.putc(将一指定字符写入文件中)
- putc() 会将参数 c 转为 unsigned char 后写入参数 stream 指定的文件中
- putc() 与 fputc()作用相同,但 putc() 为宏定义,非真正的函数调用.
- 返回值: putc() 会返回写入成功的字符,即参数 c.若返回 EOF 则代表写入失败.
8.getchar(由标准输入设备内读进一字符)
- getchar() 用来从标准输入设备中读取一个字符.然后将该字符从 unsigned char 转换成 int 后返回
- getchar() 非真正函数,而是 getc(stdin) 宏定义
- 返回值: getchar()会返回读取到的字符,若返回EOF则表示有错误发生.
9.putchar(将指定的字符写到标准输出设备)
- putchar() 用来将参数 c 字符写到标准输出设备.
- putchar() 非真正函数,而是 putc(c,stdout) 宏定义.
- 返回值: putchar() 会返回输出成功的字符,即参数 c.若返回 EOF 则代表输出失败.
10.gets(由标准输入设备内读进一字符串)
说明: gets() 用来从标准设备读入字符并存到参数 s 所指的内存空间,直到出现换行字符或读到文件尾为止,最后加上 NULL 作为字符串结束,由于 gets() 无法知道字符串 s 的大小,必须遇到换行字符或文件尾才会结束输入,因此容易造成缓冲溢出的安全性问题.建议使用 fgets() 取代。
返回值: gets() 若成功则返回 s 指针,返回 NULL 则表示有错误发生.
11.puts(由标准输入设备内读进一字符串)
说明: 把函数的字符串写到标准输出流 stdout,在输出流中用换行符('\n')替换字符串中的结束符null 字符('\0 ')
返回值: puts() 若成功则返回正的非零值,返回 EOF 则表示有错误发生.
------ 如果你的面前有阴影,那是因为你的背后有光。