使用stdlib.h c++读取文件
Read files with stdlib.h C++
我有一些问题,读取文件与c++使用stdlib.h头。请纠正我语法上的错误。编译器说'FILE没有名为buffer, curp, fd和flags的成员',这是什么意思?
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fp;
if ((fp = fopen("text.txt", "w"))==NULL){
printf("error!");
exit(1);
}
fputs("ABCDEn", fp);
printf("file address : %pn", fp->buffer);
printf("file size : %d byte n", fp->bsize);
printf("file position : %pn", fp->curp);
printf("file contents : ");
for (int i = 0; i <= 4; i++){
printf("%c", *(fp->buffer+i));
}
printf("n");
printf("file identity is unknown : %dn", fp->fd);
printf("file status : n");
if ((fp->flags & 1)==1) printf ("readonlyn");
if ((fp->flags & 2)==2) printf ("writeonlyn");
if ((fp->flags & 3)==3) printf ("read/writen");
if ((fp->flags & 8)==8) printf ("file linen");
if ((fp->flags & 16)==16) printf ("errorn");
if ((fp->flags & 32)==32) printf ("end of the filen");
if ((fp->flags & 64)==64) printf ("binary filen"); else printf ("file textn");
if ((fp->flags & 128)==128) printf ("data from filen");
if ((fp->flags & 256)==256) printf ("data from filen");
if ((fp->flags & 512)==512) printf ("file is in the terminaln"); else printf("file is in the disk");
fclose(fp);
}
FILE
为不透明类型;C标准没有定义它的字段,因此它们在不同的实现之间可能会有所不同。您的程序期望FILE
类型具有具有特定名称的字段,但是您的系统实际上并没有这样定义它。
不要依赖具有特定字段的FILE
,也不要取消引用FILE*
来尝试访问这些字段。相反,使用C标准库提供的函数,例如fread
读取内容,ftell
获取当前位置。这些函数接受一个FILE*
参数,并以适合程序运行的系统的任何方式访问其内容。
相关文章:
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 读取文件的最后一行并输入到链接列表时出错
- 为什么在读取文件大小时文件IO速度会发生变化
- 读取文件时运行时的未知行为
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C++ 读取文件读取文件不正确
- 读取文件并将其存储在unordered_map中时出现问题
- 读取文件时无法使用 OpenMP 获得加速
- 使用istringstearm和get行缓慢读取文件
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 读取文件时引发异常
- 从标准输入读取文件后读取用户输入
- 在读取文件后重置句柄
- 如何在C++编译时读取文件?
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- 读取文件在第二次调用时返回INVALID_HANDLE
- 通过指针读取文件
- 逐行读取文件,并将数据插入变量和数组中