C语言中FILE*fp是什么意思

2024-12-27 00:08:29
推荐回答(5个)
回答1:

FILE 是系统定义的一种结构类型的名称。

FILE *fp; 变量类型声明。声明 fp 是 FILE型指针,用于指向FILE类型 (文件结构)。

文件流-- 排成一队,有先后次序的 输入(或输出)一串数据,驻留并通过 输入输出缓冲区,进出程序。如同水流般地流入或流出。它来自文件或写入文件。

扩展资料:

FILE *fp的替换用法:

fp=fopen("test.dat", "w");    /*建立一个文字文件只写*/

fclose(fp);                   /*关闭文件*/

fwrite(const void*buffer,size_t size,size_t count,FILE*stream);

1、buffer:是一个指针,对fwrite来说,是要输出数据的地址。

2、size:要写入的字节数;

3、count:要进行写入size字节的数据项的个数;

4、stream:目标文件指针。

回答2:

词法分析,是编译器的第一个模块,也是最简单的模块。
最简单,指的是相对于编译器这种大型程序而言,与一般的代码相比还是有点复杂的。
关于词法分析的简介,可以看之前的文章:
词法分析器的简单思路
按照通常的C代码惯例,前缀暂时设置为scf,Simple Compiler Framework,简单编译器框架。
它所需的基本数据结构,就是动态字符串和双向链表,做了简单的代码介绍。
用C语言写个动态字符串
用C语言实现Linux风格的双向链表
首先,需要定义一个枚举类型,说明词法分析要支持的单词类型,即各种运算符、常量、标识符。
因为是从C和C++中抽取了容易实现的那部分语法,单词类型还是很多的,见如下几张图片:
是各种运算符的类型定义,与流行的编程语言基本一样。

各种运算符
第二张,大小括号、分号、逗号、冒号等语法标示符号,箭头、点号等运算符。
箭头->,一般表示指针。点号,表示取类的成员。
三个点号,表示函数的动态参数,例如printf(const char* fmt, ...)在词法分析时就会用到。
空格,space,在词法分析时作为分隔符之一。它是不需要传递到语法分析阶段的,用完之后需要忽略掉。
EOF,表示源代码文件的结尾,fgetc()之类的函数在文件结束时会返回这个值。把它也作为一个单词,用于提示词法分析过程的结束。

括号之类的也算运算符
第三张,主要是用于代码流程控制的关键字。

流程控制的关键字
第四张,是用于类型定义的关键字。

数据类型的关键字
第五张,也是这个枚举的最后一部分,是常量和标识符。

其他
定义完了这个枚举,就可以定义单词的数据结构,如下图:

list,用于把它挂载到词法分析器的链表上,按照先进先出顺序(FIFO),以备后续的语法分析时读取。
type,填写为上面那个枚举的其中之一,用于表示这个单词的类型。
data,用于存储常量的值,可以是常量数字或者常量字符串。
text,用于存储单词的原始文本,即这个词的源代码。
file、line、pos,用于存储单词所在的源码文件名,行号,行内的位置,用于打印错误信息。
接下来定义几个与单词相关的函数,alloc()、clone()、free(),等等。

然后在C文件里实现这三个函数。

最后,定义词法分析器(lexer)的数据结构。

回答3:

file是值指针类型,此处是一个file文件操作的指针,*就是定义指针的,fp就是这个文件指针的名字。
以后你就可以用这个指针来操作某一个文件了,比如读、写、等等。

回答4:

定义一个指向文件流的指针,通过操作这个指针你就能进行文件读写,打开关闭

回答5:

定义一个指向FILE结构体的指针
FIEL * file_demo;
例子:新建一个文件,写入一个字符串,代码如下:
#include
#include
int main()
{
FILE * file_demo;
file_demo = fopen("/program/test.txt","w");
fprintf(file_demo,"hello world!");
fclose(file_demo);
return EXIT_SUCCESS;
}

此程序运行平台为linux,编译器为gcc
程序的运行结果是 在/program下创建了 test.txt 文件。且里面的内容为 “hello world!” 和预想的一样。