Chinaunix首页 | 论坛 | 博客
  • 博客访问: 332136
  • 博文数量: 73
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1293
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-07 11:17
个人简介

爱运动,爱看书,爱生活!

文章分类

全部博文(73)

文章存档

2014年(7)

2013年(66)

分类: LINUX

2013-03-28 14:18:42

问题:为何在程序打印中我未添加过任何换行,却每一次打印中都自动换行。

#include
#include
#include
#include

int main()
{
// char c;
 int n;
 char* buf=malloc(86*(sizeof(char)));
 char* buf2=malloc(50*sizeof(char));
 int p=open("a.txt",O_RDWR|O_CREAT,0664);
 if(p==NULL){
  printf("file open failed.\n");
 }else {
/*读完以后指针回到文件末尾*/
 if(read(p,buf,43)){
 printf("%s",buf);
//printf("sizebuf=%d\n",sizeof(buf));
}
/*从开始偏移5个字节大小,从第五个后的第一个打印*/
 lseek(p,5,SEEK_SET);
// printf("\n");
 if((n=read(p,buf2,43))>0)
 printf("%s",buf2);
 lseek(p,0,SEEK_END);
 if(write(p,buf,43))
 lseek(p,0,SEEK_SET);
 if(read(p,buf,86))
//   buf[85]='\0';
 printf("%s",buf);
 free(buf); 
 free(buf2);
 close(p);
}
 


}

因为在这个程序中的a.txt文件是我用VI手动创建的,并向文件中输入了字符,退出VI时,系统自动地在文件尾加入了一个换行符号,所以读文件时读到了一个换行符。而只要不向文件中手动添加字符或是利用open/create函数由系统创建则文件尾不会自动添加换行符。

阅读(1739) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~