C语言用fgets()从文件读取多行字符时出现的问题

没有读到第二行字符。怎么会出现这样的问题?字符串posts为什么会存储两个'\n'?其中posts与ins均为char*型变量,fp为FILE*型变量,l表示一行字符串(... 没有读到第二行字符。怎么会出现这样的问题?字符串posts为什么会存储两个'\n'?其中posts与ins均为char*型变量,fp为FILE*型变量,l表示一行字符串(不包括'\n')的长度。预定义中有stdio.h和stdlib.h。
将两个字符串的长度增至l+2,第二行能够读出来了,但是两个'\n'依然在,不是说到'\n'就不会读了吗?
展开
 我来答
我说我是曹阿瞒怕你不信
2020-06-11
知道答主
回答量:1
采纳率:0%
帮助的人:608
展开全部

我来回答一下这个问题吧,其实之前二位得走进了一个误区,就是想着读取一行的个数然后控制fgets函数的第二个参数来读。其实这是没有必要的,我们可以随意指定一个合理的数,比如说5,3,10等都可以。我们只要不断地向流拿数据然后原样输出就可以了。只要别在输出函数中加一些其他多余的东西我们就可以将一行分多次读取,同时行与行之间的\n也是一样的需要注意的是我们输出时要用fgets函数的返回值,而不是缓冲区

White_MouseYBZ
2017-10-14 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6622万
展开全部
代码没问题,一般不可能!可能是l+1刚好是一行长度,那\n前的字符被读进ins,接着向posts中就只能读一个\n了。但绝不会有两个\n。因为fgets读到一个\n就认为这一行读完了!
更多追问追答
追问
我也很无奈,但是事实就是这样
追答
如果l刚好是一行不包括\n的长度,那么用l+1控制刚好把那一行的\n前字符读进了ins,第二个fgets只好读一个\n放进posts了。fgets的特点是读“第二个参数-1”那么多字符,或者“遇到\n”就认为一行结束,把\n读进来,再在\n后自动加一个\0,这和gets把\n读进来且把\n换成\0有所不同。使用fgets时,若无特殊需要,一般把第二个参数取得比一行的字符数大,这样就不会出错了……
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
行桂花骆辰
2020-04-12 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.4万
采纳率:35%
帮助的人:886万
展开全部
fgets函数每次读取一行,如果读取的数据存入数组s中,
那么s[0]为‘2’
那么s[1]为‘3’
那么s[2]为‘4’
那么s[3]为空格
那么s[4]s[5]为小字编码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式