关于C语言中的fgets();

559,997,dfd,586787,jh5,88p,4jh78h,iu7,89p,kkggkg,89p,878,ghg这是我要读写的内容.#include<stdio.... 559,997,dfd,586
787,jh5,88p,4jh
78h,iu7,89p,kkg
gkg,89p,878,ghg
这是我要读写的内容.

#include<stdio.h>
void main()
{
FILE *read;
char buffer[256];
if((read = fopen("readme.txt","rb")) == NULL)
{
printf("read file error!\n");
}
while(!feof(read))
{
fgets(buffer,7,read);
printf("%d\n",strlen(buffer));
printf("%s\n",buffer);
}
fclose(read);

}
我每次读取的是6个字节.是不是我读取6个字节之后。编译系统会自动在串的末尾添加一个'\0'做为串的结束符?可我读取到586时。strlen(buffer)为什么会是5呢?
不应该是buffer[0]='5';buffer[1]='8';buffer[2]='6';buffer[3]='\n';strlen(buffer)应该是4吧。它读取到串的末尾的时候,是不是会读取一个'\n'存进来。
展开
 我来答
clitoriscn
2011-11-21 · TA获得超过3628个赞
知道小有建树答主
回答量:3258
采纳率:0%
帮助的人:1515万
展开全部
strlen(buffer)是5没有错

这个是因为WINDOWS的换行不是\n一个字符,而是\r\n2个字符的缘故.
如果是UNIX系统,则是\n作为换行,则长度是4
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式