重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
rewind就是把当前文件指针移动到文件开始,fseek文件定位,ftell返回文件当前指针。
创新互联专注于企业营销型网站建设、网站重做改版、岳麓网站定制设计、自适应品牌网站建设、HTML5建站、商城网站制作、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为岳麓等各大城市提供网站开发制作服务。
如rewind(fp);fp为文件指针意思是把指针回到文件开始;fseek(fp,nL,1)这个有三种情况0表示文件开始,1表示当前位置,2表示文件末尾,nL表示指针位移量可以为负;ftell(fp)返回文件当前的指针
\n输出到文件实际上是 0D 0A 占2个字节
程序写入文件的字节是
31 20 32 20 33 0D 0A 34 20 35 20 35 0D 0A 共14个字节
第一次读入的时候 读入1 空格 2
文件指针移过3个字节 31 20 32
第二次读入的时候 读入 空格 3 换行 4
文件指针移过了5个字节
20 33 0D 0A 34
第三次读入的时候 读入 空格 5 空格 6
文件指针移过4个字节
20 35 20 36
函数原型是 long int ftell ( FILE * stream );
返回 文件内部读写指针的 当前位置,以字节为单位,二进制文件 数值 等于 距离 文件开始处 多少字节。文本文件 数值 也许没有 意义,但仍可用于 fseek.
得到-1L 表示函数调用 失败。失败原因 需查 errno。
因为ftell函数的作用就是得到当前指针的位置,
而你写的这个fseek(fp,0,SEEK_END); 指针的位置就是在文件末尾 没有移动
还有指针是以字节为单位 移动的么
就是D了
如果文件fp不存在则会返回-1,这是正常的,函数里面进行处理了,比如
int ftell(fp)
{
if( fileExist(fp) )//假定 fileExist 函数可以检测文件是否存在
return (-1);
else
return (0);
........
}
如果不进行文件检测处理,那么指定一个不存在的文件名,并对该文件进行读写操作就会出错,可以看看c++里的异常处理,可以捕获程序异常,并进行相应处理,不至于程序崩溃
在文本模式下ftell会自动处理换行符,在UNIX,MSDOS,MAC这三个系统对换行符的定义是不一样的:
UNIX: "\n"
MSDOS: "\r\n"
MAC: "\r"
在文本模式下,假如是在windows系统下"\r\n"会当成一个字符, 而在二进制模式下"\r\n"会忽略操作系统对特殊字符的定义,识别为'\r'和'\n'两个字符。所以ftell返回的偏移量会有所不同。