FILE
这是在头文件stdio.h中找到的对于FILE的定义
struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
可以看出FILE是一个结构体
fopen()
fopen()是c标准库stdio.h中的一个函数下面是它的函数声明:
作用就是打开一个文件,两个参数的含义就是左边是文件名,右边是打开格式
FILE *fopen(const char *filename, const char *mode)
//使用给定的模式 mode 打开 filename 所指向的文件。
filename – 这是 C 字符串,包含了要打开的文件名称。
mode – 这是 C 字符串,包含了文件访问模式如下:
“r” 打开一个用于读取的文件。该文件必须存在。
“w” 创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。
“a” 追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。
“r+” 打开一个用于更新的文件,可读取也可写入。该文件必须存在。
“w+” 创建一个用于读写的空文件。
“a+” 打开一个用于读取和追加的文件
该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。
fscanf()
C 库函数 int fscanf(FILE *stream, const char *format, …) 从流 stream 读取格式化输入。
作用就是读取文本中的内容"We are in 2014"赋值给后面的变量str1, str2, str3, &year
下面的实例演示了 fscanf() 函数的用法。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str1[10], str2[10], str3[10];
int year;
FILE * fp;
fp = fopen ("file.txt", "w+");
fputs("We are in 2014", fp);
rewind(fp);
fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);
printf("Read String1 |%s|\n", str1 );
printf("Read String2 |%s|\n", str2 );
printf("Read String3 |%s|\n", str3 );
printf("Read Integer |%d|\n", year );
fclose(fp);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
Read String1 |We|
Read String2 |are|
Read String3 |in|
Read Integer |2014|
fputs()
属于C 标准库 - <stdio.h>
C 库函数 int fputs(const char *str, FILE *stream) 把字符串写入到指定的流 stream 中,但不包括空字符。
作用是写入字符串,两个参数,左边是要写入的内容,右边是写入的对象
#include<stdio.h>
int main()
{
FILE * fp;
fp = fopen ("file.txt", "w+");
fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);
fputs("\n这是 C 语言。", fp);
fputs("这是一种系统程序设计语言。", fp);
fclose(fp);
return(0);
}
fprintf()
属于C 标准库 - <stdio.h>
C 库函数 int fprintf(FILE *stream, const char *format, …) 发送格式化输出到流 stream 中。
其作用也是向文件写入内容,不过它可以规定写入的格式
fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);