linux中的read函数读到文件结束时在printf中打印buff时为什么有换行符
我读取的文件中有helloworld这个几个字符(只有这个字符没有加换行符)。我用read函数想读取的字符个数是100个。在用%s方式打印时它给自动换行了。在同样的条件下...
我读取的文件中有hello world这个几个字符(只有这个字符没有加换行符)。 我用read函数想读取的字符个数是100个。在用%s方式打印时它给自动换行了。
在同样的条件下我用read去读一个空文件,此时在以%s方式打印buff就没有换行符了。
望各位大侠指教为什么一个自动就有换行一个没有。
小弟先在这里感谢了!! 展开
在同样的条件下我用read去读一个空文件,此时在以%s方式打印buff就没有换行符了。
望各位大侠指教为什么一个自动就有换行一个没有。
小弟先在这里感谢了!! 展开
1个回答
展开全部
#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测试了没有你说的现象
#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测试了没有你说的现象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询