我正在尝试读取 Ubuntu 中文件的行数。对于我的代码,我正在使用CodeBlocks。
这是我编写的代码。
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"单词"。
检查工作目录的设置。它可能不是 pjt/bin/Debug。此外,请尝试指定文件的完整路径。
if (fp == NULL){
return 0;
}
fp 使用 NULL 进行检查,因为fopen
返回指针,如果成功,它将是非 NULL,因此如果fp == NULL
,则文件打开不成功。这就是为什么程序无法继续,只能返回的原因。
如论坛中所述,流指针在其中没有寻找的有效文件指针。对于文件的数据工程师行,请将值类型重新考虑为字符串或数字(不包括 (。据说当 feof 在文件流的末尾时,逻辑约束对整个文件进行布尔值,就像你的 while !feof...作为缓冲区立即返回 EOF。理论上,在您的代码中,您应该将 转换为等于 ch + 1 以推测行。