fwrite()读取长度错误

简介: fwrite()读取长度错误

最近在写elf格式文件的解析和装载过程,打开elf文件使用的是file_elf = fopen(path,"r");在将PT_LOAD类型的segment加载到内存时老师不能够读取到我指定长度的空间,即fread((char *)ProHead->p_vaddr, 1 , ProHead->p_filesz,file_elf )的时候,返回的读取到的长度并不是ProHead->p_filesz这个大小,很是折磨人,不知道问题出在哪里。


猜测是应该遇到了结束符\0 所以提前结束读取,改为二进制读取fopen(path,"rb"); 这样肯定就可以读到指定长度了吧?试了下果然好了!! 记录下,给遇到同问题的朋友一个分享,希望能帮助到大家!


目录
相关文章
|
6月前
|
存储
文件的顺序读写——顺序读写函数——fgets、fgetc、fputs、 fputc
文件的顺序读写——顺序读写函数——fgets、fgetc、fputs、 fputc
79 0
|
存储 编译器 C语言
【C++】内联函数与快速读入read函数(整型)
【C++】内联函数与快速读入read函数(整型)
57 0
|
C++
C++读取单个字符操作
get() 是 istream 类的成员函数,它有多种重载形式,不过本文只介绍最简单最常用的一种: int get(); 此函数从输入流中读入一个字符,返回值就是该字符的 ASCII 码。 如果碰到输入的末尾,则返回值为 EOF。EOF 是 End of File 的缩写。istream 类中从输入流(包括文件)中读取数据的成员函数,在把输入数据都读取完后再进行读取,就会返回 EOF。 EOF 是在 iostream 类中定义的一个整型常量,值为 -1。get() 函数不会跳过空格、制表符、回车等特殊字符,所有的字符都能被读入。例如下面的程序: #include <iostr
88 0
|
11月前
|
C#
C# (File方法)对文件的操作,字节写入和读取
C# (File方法)对文件的操作,字节写入和读取
|
存储 数据安全/隐私保护
scanf函数读取数据 & 清空缓冲区
scanf函数读取数据 & 清空缓冲区
341 0
|
机器学习/深度学习 C语言
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
501 0
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
|
缓存 数据安全/隐私保护 程序员
getchar函数输入与缓冲区
getchar函数输入与缓冲区
139 0
strlen库函数求字符串的长度和三种模拟实现方法
strlen库函数求字符串的长度和三种模拟实现方法
142 0
strlen库函数求字符串的长度和三种模拟实现方法
编写一个程序,如果名为Exercise12_15.txt的文件不存在,则创建该文件。使用文本I/O将随机产生的100个整数写入文件,文件中的整数由空格分开。从文件中读回数据并以升序显示数据。
编写一个程序,如果名为Exercise12_15.txt的文件不存在,则创建该文件。使用文本I/O将随机产生的100个整数写入文件,文件中的整数由空格分开。从文件中读回数据并以升序显示数据。
277 0