爱运动,爱看书,爱生活!
分类: 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函数由系统创建则文件尾不会自动添加换行符。