关于fseek的问题

chenlei1700 2009-01-07 09:45:08
请看下面的程序
#include<stdio.h>
#include<stdlib.h>
#define SIZE 40

void main(){
FILE *fp;
long offset;

char filename[20],buf[SIZE];

printf("input file name =");
scanf("%s",filename);
fp=fopen(filename,"r");
if(fp==NULL){
fprintf(stderr,"Can't open %s\n",filename);
exit(1);
}

printf("to terminate input ^D\n");
while(1){
printf("input offset=");

if(scanf("%d",&offset)==EOF)break;
fseek(fp,offset,0);
fgets(buf,SIZE,fp);
printf("%s",buf);
}
printf("\n");
fclose(fp);
}
/*
input file name =1.txt
to terminate input ^D
input offset=0
11111
input offset=1
1111
input offset=2
111
input offset=3
11
input offset=4
1
input offset=5

input offset=6

input offset=7
22222
input offset=8
2222
input offset=9
222
input offset=10
22
input offset=11
2
input offset=12

input offset=13

input offset=14
33333
input offset=^Z

Press any key to continue*/
用的文档内容如下
11111
22222
33333
44444
55555
66666
///////////////////////////////////////////////////////////////////////////
我想问的是为什么为什么当输入5和6 的时候会得到一样的结果呢?谢谢
...全文
99 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cw2004100021124 2009-01-07
  • 打赏
  • 举报
回复
关注中
china_west 2009-01-07
  • 打赏
  • 举报
回复
my god
waizqfor 2009-01-07
  • 打赏
  • 举报
回复
MS 原来说过\r\n的问题啊
windows和linux还是有区别的 嘿嘿
xiaoyisnail 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenlei1700 的回复:]
那linux下面的回车也是2个字符么?
windos下的回车的\r代表什么意思呢?

谢谢

[/Quote]

linux下的换行就一个\n
chenlei1700 2009-01-07
  • 打赏
  • 举报
回复
那linux下面的回车也是2个字符么?
windos下的回车的\r代表什么意思呢?

谢谢
xiaoyisnail 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chenlei1700 的回复:]
就是说回车后面还有一个字符?那个字符有什么用呢?代表什么意思?
[/Quote]

是说windows下文本文件的换行由两个字符组成,\r\n
nineforever 2009-01-07
  • 打赏
  • 举报
回复
Windows下文件里的回车有两个字符组成\r\n,分别是回车和换行
chenlei1700 2009-01-07
  • 打赏
  • 举报
回复
就是说回车后面还有一个字符?那个字符有什么用呢?代表什么意思?
nineforever 2009-01-07
  • 打赏
  • 举报
回复
fgets是获取一行,你fseek到5和6的时候,实际上是定位到了“11111”后面的换行符\0xd和\0xa。所以输出就是\n了
xiaoyisnail 2009-01-07
  • 打赏
  • 举报
回复
\r\n,两个字符

69,371

社区成员

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

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