linux中的read函数读到文件结束时在printf中打印buff时为什么有换行符

2025-05-07 15:04:01
推荐回答(1个)
回答1:

#include
#include
#include
#include
#include
#include
#include

#define MAXSIZE 100

int main(void)
{
int i,j,fd,size,len;
char *buf="Hello world";
char buf_r[MAXSIZE];
len=strlen(buf);

//open
if((fd=open("./hello.c",O_CREAT | O_TRUNC | O_RDWR,0666))<0) {
perror("open:");
exit(1);
}
else
printf("Open file:hello.c %d\n",fd);
//test-read
if((size=read(fd,buf_r,MAXSIZE))<0){
perror("read:");
exit(1);
}
else {
printf("read from file:%s \n",buf_r);
}
//write
if((size=write(fd,buf,len))<0){
perror("write:");
exit(1);
}
else
printf("Write:%s\n",buf);

//test-read
printf("Now test starts...\n");
lseek(fd,0,SEEK_SET);
if((size=read(fd,buf_r,MAXSIZE))<0){
perror("read:");
exit(1);
}
else {
printf("read from file:%s \n",strlen(buf_r),size,buf_r);
}
printf("Now test stops...\n");

//close
if(close(fd)<0){
perror("close:");
exit(1);
}
else
printf("close hello.c\n");
exit(0);

}
gcc测试了没有你说的现象