请问VC下FILE结构体中_flag的值里有一个宏定义_IOSTRG有人知道是什么意思吗?

六道佩恩 2018-11-26 02:30:56
经测试发现,如果此位为0,那么读到文件尾后_cnt一直为0,但如果该位为1,那么读到文件尾后再读cnt会变成-1
...全文
179 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-11-29
  • 打赏
  • 举报
回复
艺海拾贝
赵4老师 2018-11-28
  • 打赏
  • 举报
回复
六道佩恩 2018-11-28
  • 打赏
  • 举报
回复
引用 8 楼 赵4老师 的回复:
VC6EN http://pan.baidu.com/s/1jImOtAe
好东西呀!非常感谢赵老师!_IOSTRG的问题已经搞清楚了。请问赵老师是从哪里找到这个的?
六道佩恩 2018-11-28
  • 打赏
  • 举报
回复
引用 7 楼 zjq9931 的回复:
http://computer-programming-forum.com/47-c-language/0ca9fef414ff0312.htm 这里有一段,说是用于非文件的,字符串模拟的伪流(大于32K)会用到。例如sprintf,scanf。 和缓冲区默认32K有关。
我看了后不是很懂,我自己做过测试,单独改变这个位后,原本fgetc读到文件尾后就不再读了,即记录剩余字节个数的_cnt一直为0,但_IOSTRG位置1后,读完文件后_cnt开始往负值增加。所以我看了你发的这个帖子不是很明白,光是这个“假流”都不明所以,更别说与我的实验结果似乎毫无关系。不过帖子里说的跟fclose相关的说法比较贴近。
  • 打赏
  • 举报
回复
http://computer-programming-forum.com/47-c-language/0ca9fef414ff0312.htm 这里有一段,说是用于非文件的,字符串模拟的伪流(大于32K)会用到。例如sprintf,scanf。 和缓冲区默认32K有关。
赵4老师 2018-11-26
  • 打赏
  • 举报
回复
提醒,FILE处理相关函数都是开源的。
  • 打赏
  • 举报
回复
引用 楼主 六道佩恩 的回复:
经测试发现,如果此位为0,那么读到文件尾后_cnt一直为0,但如果该位为1,那么读到文件尾后再读cnt会变成-1
、 我在MSDN中没有找到这个啊,在fcntl.h中也没有找到这个值,你是在哪个文件里面找到的?
六道佩恩 2018-11-26
  • 打赏
  • 举报
回复
引用 5 楼 赵4老师 的回复:
比如: C:\glibc-2.25\stdlib\abs.c C:\Program Files\Borland\CBuilder6\Source\Rtl\Source\math\abs.c C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\ABS.C C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\abs.c C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\abs.c C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\abs.c
谢谢。不过我下了glibc发现是linux下是实现方式,不是windows下的,FILE的结构不一样。VS我有安装,在VC98目录下没找到CRT目录,通过脚本搜索文本也没找到有标准库的实现代码。求支招
赵4老师 2018-11-26
  • 打赏
  • 举报
回复
比如:
C:\glibc-2.25\stdlib\abs.c
C:\Program Files\Borland\CBuilder6\Source\Rtl\Source\math\abs.c
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\ABS.C
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\abs.c
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\abs.c
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\abs.c
六道佩恩 2018-11-26
  • 打赏
  • 举报
回复
引用 2 楼 赵4老师 的回复:
提醒,FILE处理相关函数都是开源的。
请问在哪里能看到这些开源代码?
六道佩恩 2018-11-26
  • 打赏
  • 举报
回复
引用 1 楼 zjq9931 的回复:
[quote=引用 楼主 六道佩恩 的回复:] 经测试发现,如果此位为0,那么读到文件尾后_cnt一直为0,但如果该位为1,那么读到文件尾后再读cnt会变成-1
、 我在MSDN中没有找到这个啊,在fcntl.h中也没有找到这个值,你是在哪个文件里面找到的?[/quote] stdio.h

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧