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

我读取的文件中有helloworld这个几个字符(只有这个字符没有加换行符)。我用read函数想读取的字符个数是100个。在用%s方式打印时它给自动换行了。在同样的条件下... 我读取的文件中有hello world这个几个字符(只有这个字符没有加换行符)。 我用read函数想读取的字符个数是100个。在用%s方式打印时它给自动换行了。
在同样的条件下我用read去读一个空文件,此时在以%s方式打印buff就没有换行符了。
望各位大侠指教为什么一个自动就有换行一个没有。
小弟先在这里感谢了!!
展开
 我来答
ningzhanma1227
2011-08-29 · TA获得超过255个赞
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:130万
展开全部
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#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测试了没有你说的现象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式