fseek(fp, -1, SEEK_CUR); 遇到一个问题。

追_逐 2014-05-09 12:28:14
fseek(fp, -1, SEEK_CUR);
我在Windows 控制台程序里面使用了这个函数,结果该函数的执行结果是将文件指针完全移动到了文件头了。有没有人遇到过类似情况的呢?

一个源代码如下:

// szStringReaded 是已经从fp 中读取出来的一个字符串,chFind 是查找szStringReaded 中是否有该字符。
// 该函数的意思是:查找读取出来的字符中是否有字符chFind ,如果有则将文件指针移动回该字符位置。
void MOVE_BACK(FILE *fp, char *szStringReaded, char chFind)
{
char *pPosition = strchr(szStringReaded, chFind);
if (pPosition != NULL)
{
long nOffset = -abs((long)(strlen(szStringReaded) - (pPosition - szStringReaded)));
fseek(fp, nOffset, SEEK_CUR);
}
}
...全文
959 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
追_逐 2014-05-09
  • 打赏
  • 举报
回复
额~,原来我在后面的代码中写错了,把SEEK_CUR 写成SEEK_SET 了,所以跑到前面去了。 多谢3楼的提示,才让我想到用FTELL 去调试。
赵4老师 2014-05-09
  • 打赏
  • 举报
回复
不要把 fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fseek,fread,fwrite,fgetc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待 弄混了 // szStringReaded 是已经从fp 中读取出来的一个字符串,chFind 是查找szStringReaded 中是否有该字符。 // 该函数的意思是:查找读取出来的字符中是否有字符chFind ,如果有则将文件指针移动回该字符位置。 void MOVE_BACK(FILE *fp, char *szStringReaded, char chFind) { char *pPosition = strchr(szStringReaded, chFind); if (pPosition != NULL) { long nOffset = -abs((long)(strlen(szStringReaded) - (pPosition - szStringReaded))); printf("before fseek: nOffset==%d,ftell(fp)==%d\n",nOffset,ftell(fp)): fseek(fp, nOffset, SEEK_CUR); printf("after fseek: ftell(fp)==%d\n",ftell(fp)): } }
追_逐 2014-05-09
  • 打赏
  • 举报
回复
引用 1 楼 ouyh12345 的回复:
文件映射,操作映射出来的指针
没明白。
ouyh12345 2014-05-09
  • 打赏
  • 举报
回复
文件映射,操作映射出来的指针

70,024

社区成员

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

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