首页 > 解决方案 > 尝试在函数中使用 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);
    }
}

我希望它计算给定文本文件中的单词,但我从标题中收到错误消息

标签: cfunctionpointersint

解决方案


你在这个函数上有错误的返回类型

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)

推荐阅读