fseek问题

闲闲的程序猿 2010-03-29 09:17:56
#include "stdafx.h"

int main(int argc, char* argv[])
{
FILE *example;
int temp;
char ctrl;
example = fopen("example.txt","r");
for (;;)
{
fscanf(example,"%d",&temp);
printf("%d",temp);
fflush(stdout);
scanf("%c",&ctrl);
fflush(stdin);
if (ctrl == 'a')
{
if(fseek(example,-4l,SEEK_CUR) == 0)
{
printf("done\n");
}
}
else if (ctrl == 'b')
{
;
}
else
{
if(fseek(example,4l,SEEK_CUR) == 0)
{

printf("done\n");
}
}
}
return 0;
}

这样一段代码,我想实现fseek的测试,文件内容为1 2 3 4 5 6 7 8 9 ,我想实现每次按下b正常向后读取,按a向前读一个,按另外的向后跳过一个,可是结果是向后跳了两个,为什么呢?
...全文
161 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
happynxy 2010-03-30
  • 打赏
  • 举报
回复
我也算一个
xiuxianshen 2010-03-30
  • 打赏
  • 举报
回复
来接分,结贴吧
smallbear_2008 2010-03-29
  • 打赏
  • 举报
回复
这样可以吗?


#include<stdio.h>
#include<fcntl.h>
#include<stdlib.h>

int main(int argc, char* argv[])
{
FILE *example;
int temp;
char ctrl;
int ch = -1;

example = fopen("example.txt","r");
for (;;)
{
fscanf(example,"%d",&temp);
printf("%d",temp);
fflush(stdout);
scanf("%c",&ctrl);
while((ch = getchar())!= EOF && ch != '\n');
fflush(stdin);
if (ctrl == 'a')
{
if(fseek(example,-1L,SEEK_CUR) == 0)
{
printf("done\n");
}
}
else if (ctrl == 'b')
{
;
}
else
{
if(fseek(example,1L,SEEK_CUR) == 0)
{

printf("done\n");
}
}
}

return 0;
}

huanmie_09 2010-03-29
  • 打赏
  • 举报
回复
我来接分~
闲闲的程序猿 2010-03-29
  • 打赏
  • 举报
回复
问题以解决,是我搞错了

70,037

社区成员

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

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