一个关于C语言中的fgets函数的问题

 我来答
牛印枝萨书
2020-01-03 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.4万
采纳率:26%
帮助的人:620万
展开全部
是路径写错了,路径里一定要用“\\”,因为‘\’是转义字符,两个'\'才最终表示一个'\'。
因为路径错了,所以fopen打开文件不成功,fp=null,再用fgets的话就出现了你说的expression
str!=null的错误。
建议每次用fopen之后都要判断文件打开是否成功,例如本题中
fp=fopen("c:\\program
files
(x86)\\mycode\\file1.c","r");
if(fp==null)
{
printf("can
not
open
the
file!\n");
return;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
揭玉蓉示念
2020-01-07 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.4万
采纳率:26%
帮助的人:854万
展开全部
fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为:
char
*
fgets(char
*
string,
int
size,
FILE
*
stream);
参数说明:
string为一个字符数组,用来保存读取到的字符。
size为要读取的字符的个数。如果该行字符数大于size-1,则读到
size-1
个字符时结束,并在最后补充'
\0';如果该行字符数小于等于
size-1,则读取所有字符,并在最后补充
'\0'。即,每次最多读取
size-1
个字符。
stream为文件流指针。
【返回值】读取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL。因此我们不能直接通过fgets()的返回值来判断函数是否是出错而终止的,应该借助feof()函数或者ferror()函数来判断。
注意:fgets()与gets()不一样,不仅仅是因为gets()函数只有一个参数
FILE
*stream,更重要的是,fgets()可以指定最大读取的字符串的个数,杜绝了gets()使用不当造成缓存溢出的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式