gpt4 book ai didi

C 文件处理和记事本中的行尾字符

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:53 25 4
gpt4 key购买 nike

我在阅读 C 文件处理时遇到了 fseek() 函数。关于它的使用,书中写了以下声明:

int fseek(FILE *stream, long offset, int from );  //The function prototype

“在二进制流中,可能不支持从 SEEK_END 中查找,因此应该避免。在文本流中,offset 必须为零,如果 fromSEEK_CURSEEK_END。偏移量必须是先前从调用同一流上的 ftell() 返回的值如果 fromSEEK_SET。”

我不明白给定的用法。为什么偏移量应该为零?

为了找到答案,我进行了调查,发现在文本流中,存在从 C 程序到 MSDOS 中不同字符的 EOL(换行符)映射。 C语言中换行符的大小是1个字节。
当它被写入记事本文件时会发生什么?。记事本中EOL的大小是多少?
我创建了一个记事本文件并执行了以下操作:

场景 1:
abcd

显示的大小为 4 个字节。换行符或 EOF 现在在哪里?

场景 2:
abcd
一个

显示的大小为 7 个字节。

场景 3:
abcd
一个
b

显示的大小为 10 个字节。现在尺寸是怎么计算出来的?

有人能回答这些问题吗?

最佳答案

我假设 notepad 添加了类似行尾的窗口,它由 \r\n 组成,因此你的问题的答案是 2,并且这显然解释了观察到的行为。

另外,EOF不是写入文件的字符,它是一些函数返回的一个特殊值,表示文件结束。

关于C 文件处理和记事本中的行尾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27966718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com