c - 尝试在函数中使用 txt 文件时获取“'->' 的无效类型参数(有 'int')”
问题描述
我必须获取我为打开 txt 文件并计算函数中的单词而编写的代码,但在正确移动文本文件时遇到问题(我很确定)。
我试过用谷歌搜索如何在 c 中返回文件,显然是这个错误,在尝试和错误后,我遇到了一些关于一元无效类型参数的错误。我不擅长编程,但在我切换到不同的电气工程路径之前,我必须完成一些编程任务以进行签收,尤其是这个我遇到了很多麻烦。
#include <stdio.h>
#include <stdlib.h>
char openIt();
int countIt(char (*p_file));
int main()
{
int wordCount = countIt(openIt());
}
char openIt(void)
{
FILE * p_file = fopen("alice-ch1.txt", "r");
return p_file;
}
int countIt(char (*p_file))
{
int wordcount = 0;
int i = 0;
if (p_file == NULL)
{
printf("File cannot be opened!\n");
}
else
{
char tempChar;
char chapter[16383];
int i;
int wordcount = 0;
int filed = fgetc(p_file);
while (!feof(*p_file)) //this is where the error occurs
{
for(i = 0; !feof(*p_file); i++)
{
tempChar = getc(p_file);
chapter[i] = tempChar;
if(chapter[i] == ' ' || chapter[i] == '\n')
{
if((chapter[i-1] != ' ' || chapter[i-2] != ' ') && chapter[i-1] != '*' && chapter[i-1] != '\n')
{
wordcount++; // ((chapter[i-1] <= 'A' && chapter[i-1] >= 'Z') || (chapter[i-1] <= 'a' && chapter[i-1] >= 'z'))
}
}
}
}
fclose(p_file);
}
}
我希望它计算给定文本文件中的单词,但我从标题中收到错误消息
解决方案
你在这个函数上有错误的返回类型
char openIt(void)
{
FILE * p_file = fopen("alice-ch1.txt", "r");
return p_file;
}
p_file
是指向FILE
( FILE *
) 的指针,因此它也应该是用作返回值的数据类型。
然后你将该函数的返回值传递给countIt
... 但这并不需要 aFILE *
因为它也是唯一的参数。这是对文件(即fgetc
)进行操作的各种功能所期望的。这是您的问题所指的特定错误来自您取消引用的p_file
地方,因此它不再是指针。
如果您的编译器没有使用此类代码引发大量错误和警告,我会感到非常惊讶。
您应该将函数定义更改为如下。
FILE *openIt(void)
int countIt(FILE *p_file)
推荐阅读
- mysql - 我在mysql中用主键和外键相互连接两个表时遇到问题
- octave - 八度重复数组的有效方法
- javascript - 文本内容随着滚动在 div 中消失
- python - XML Etree 插入元素不改变 element.text 值
- mysql - MySQL 函数有限制
- node.js - Node.js - 使用 supertest 测试 REST API 路由
- python - Pandas 从两列中获取随机值
- anaconda - conda:列出所有使用某个包的环境
- laravel - 如何在 Laravel 中缓存特定路由或从缓存中删除特定路由?
- kubernetes - 列出 Kubernetes 上所有可用的入口控制器