-3

我需要使用 C 编程语言从输入文件中读取数据来完成我的一项任务。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char *input = readFromFile(argv);
    return 0;
}

char *readFromFile(char *argv[])
{
    FILE *fp;
    fp = fopen(argv[1],"r");
    char *input, c;
    int i = 0;

    while(!feof(fp))
    {
        c = fgetc(fp);
        input[i++] = c;
    }
    fclose(fp);
    return input;
}

我想在另一个函数中执行此读取操作,而不是在函数中main()。我试过了,但做不到。

当我尝试使用上面的代码执行此操作时,我收到一条错误消息,内容为:

冲突的类型readFromFile()

我该如何解决这个错误并做我想做的事?

4

2 回答 2

0

您必须readFromFile在使用前声明。最好的方法是添加一个原型:

char *readFromFile(char *argv[]); /* note that the identifier is useless here */

注意:顺便说一句,您的源代码中还有很多其他错误。主要的一个是你没有为input. 因此,您将尝试取消引用未初始化的指针:这会导致未定义的行为。由于您要返回指针,因此您需要使用动态分配。

#include <stdlib.h>
char *input = malloc(SIZE);

此外,您的使用feof是错误的。

于 2012-11-14T17:46:37.107 回答
-2

首先,您可以在这些之间进行选择:

1、声明函数原型;
2.在main之前声明函数。

通过这种方式,函数在 main 中被识别。为了快速,我总是在 main 之前声明函数。在 readFromFile 中,你没有分配你需要的内存,为你修复它:

#include <stdio.h>
#include <stdlib.h>

char *readFromFile(char *argv[])
{
    FILE *fp;
    fp = fopen(argv[1],"r");
    char *input, c;
    int i = 0;
    size_t size=100*sizeof(char);
    input=(char*)malloc(size);

    while( (c = fgetc(fp)) != EOF )
    {
        if(++i == size)
        {
            size+= 100*sizeof(char);
            input=(char*)realloc(input,size);
        }
        input[i-1] = c;
    }
    fclose(fp);
    return input;
}

int main(int argc, char *argv[])
{
    char *input = readFromFile(argv);
    return 0;
}
于 2012-11-14T18:00:56.763 回答