鱼C论坛

 找回密码
 立即注册
查看: 673|回复: 4

[已解决]fgetc函数

[复制链接]
发表于 2020-4-20 21:56:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
函数调用语句“fgetc(buf,n,fp);”从fp指向的文件中读入n-1个字符放到buf字符数组中。


这里为什么是n-1??
最佳答案
2020-4-20 22:23:01
本帖最后由 4goodworld 于 2020-4-20 22:37 编辑
老牛来学习 发表于 2020-4-20 22:09
但是数组长度如果是5,那么你输入五个字符进去,他是不会自己加结束符的啊。这个函数是会自己加结束符?


参考:https://www.runoob.com/cprogramming/c-function-fgets.html
上面写的蛮清楚的:
n -- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
开始我的理解有问题,我实操了一下
我觉得,你要理解起来就是这么理解:
如果你觉得你的字符串如“abcdf”,你认为长度是5,那么请记得,调用时写上5+1=6,请要考虑下还一个空字符,考虑这个空字符的目的是,这个函数自动会加上'\0',相当于你还没干之前,它已经预定了一个位置给了'\0',你少了一个位置,所以是n-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-20 21:57:14 | 显示全部楼层
字符串以'\0'结尾
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-20 22:09:16 | 显示全部楼层

但是数组长度如果是5,那么你输入五个字符进去,他是不会自己加结束符的啊。这个函数是会自己加结束符?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 22:18:11 | 显示全部楼层
老牛来学习 发表于 2020-4-20 22:09
但是数组长度如果是5,那么你输入五个字符进去,他是不会自己加结束符的啊。这个函数是会自己加结束符?

scanf、fgetc 什么之类的都会自动加结束符的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 22:23:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 4goodworld 于 2020-4-20 22:37 编辑
老牛来学习 发表于 2020-4-20 22:09
但是数组长度如果是5,那么你输入五个字符进去,他是不会自己加结束符的啊。这个函数是会自己加结束符?


参考:https://www.runoob.com/cprogramming/c-function-fgets.html
上面写的蛮清楚的:
n -- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
开始我的理解有问题,我实操了一下
我觉得,你要理解起来就是这么理解:
如果你觉得你的字符串如“abcdf”,你认为长度是5,那么请记得,调用时写上5+1=6,请要考虑下还一个空字符,考虑这个空字符的目的是,这个函数自动会加上'\0',相当于你还没干之前,它已经预定了一个位置给了'\0',你少了一个位置,所以是n-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 18:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表