linux 下read()函数读文本文件问题

我在linux下写了一个read()函数读一个只含一个字符i的word.txt文件为什么会读到2个字符啊?代码如下:#include<unistd.h>#include<... 我在linux下 写了一个read()函数读一个只含一个字符i的word.txt文件 为什么会读到2个字符啊?代码如下:
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <stdio.h>
int main()
{
int fd,i;
char buf[10]={0};
fd=open("./a.txt",O_RDONLY);
i=read(fd,buf,10);
printf("%d\n",i);
printf("%d\n",buf[0]);
printf("%d\n",buf[1]);
close(fd);
}

word.txt 是在linux下 用vim 建的 只输了一个i进去,然后退出保存的
open 里面是 "./word.txt"忘记改过来了
展开
 我来答
caorr1980
推荐于2016-11-23
知道答主
回答量:24
采纳率:0%
帮助的人:15.5万
展开全部
那是因为vim自动给你加上换行符了'\n',即0x0a,你可以用ls -l word.txt看一下,文件大小是不是两个字符。
追问
谢谢您啦,vim为什么加一个换行符啊 不是应该加文件结束符么?
追答
vim加换行符应该是vim特定的行为,但应该不是所有的文字处理程序都会给你加换行符的,比如notepad++就不会。
至于文件结束符EOF,这不是文件本身所包含的内容,而应该是读到结尾时操作系统返回给你的。
彼得兔丶2m
2012-09-25
知道答主
回答量:34
采纳率:0%
帮助的人:4.2万
展开全部
doc文件是office word文件,估计在linux里读会有问题。好像装了open office可以打开它,可以试试。
追问
哥哥 我这题跟doc没有半毛钱关系吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9f830bf45
2012-09-25 · TA获得超过922个赞
知道小有建树答主
回答量:742
采纳率:0%
帮助的人:467万
展开全部
你的printf输出什么?

1种可能是回车符号

第2种可能是vim的编码导致你的‘i'是2个字节构成的...
追问
是回车符 那么这么说的话read()函数读文件是读不到文件结束符的喽? 只有用getchar(fp)一个一个读,最后fp文件指针才会跳到文件结束符去,是不是这样理解?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lxfmyth
2012-09-25
知道答主
回答量:40
采纳率:0%
帮助的人:13.7万
展开全部
是不是多了回车符?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式