C语言中fp=fopen NULL,C - 为什么在fopen(filename,“r”)之后fp == NULL是true?

这篇博客讨论了一个C程序`countlines()`,该程序旨在计算名为`words`的文件中的行数。作者遇到的问题是调用函数后返回值为0,可能的原因包括文件未找到或缺少读取权限。解决方案包括检查文件路径和使用`perror()`来获取错误信息。博客还提到了代码中对文件结束的检查方法可能存在不足。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是我所做的代码。

int countlines()

{

// count the number of lines in the file called filename

FILE *fp = fopen("words", "r");

int ch=0;

int lines=0;

if (fp == NULL){

return 0;

}

lines++;

while(!feof(fp))

{

ch = fgetc(fp);

if(ch == '\n')

{

lines++;

}

}

fclose(fp);

return lines;

}

如果我调用countlines(),返回值是0,这是因为他检查fp == NULL,这是真的。

我把文字放在与我的主文件夹相同的文件夹中。可执行文件位于Projectfolder/bin/Debug中。

词是这样的:

"albatros",

"olifant",

"kantklos",

"robijn",

"internet"

的最终目标是,以填补的文件的话的话阵列,而不使用的#include“字”。

2014-12-20

Jasper

+2

可能是文件未找到,可能是您没有读取权限,请使用[stat]检查问题(http://man7.org/linux/man-pages/man2/stat.2。 HTML)。 –

+0

这就是为什么你应该说; if(fp == NULL){perror(“Ups”);返回-1; }'('perror'给你一个理由,而'-1'或者其他负值是OK方式来调用函数调用失败。) –

+0

它的话。我有权限阅读文件 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值