[英]Reading input file in C
我需要使用 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()
冲突类型
我该如何解决这个错误并做我想做的事?
你必须在使用它之前声明readFromFile
。 最好的方法是添加一个原型:
char *readFromFile(char *argv[]); /* note that the identifier is useless here */
注意:顺便说一下,您的源代码中还有很多其他错误。 主要是你没有为input
分配内存。 因此,您将尝试取消引用一个未初始化的指针:这会导致未定义的行为。 由于您要返回指针,因此需要使用动态分配。
#include <stdlib.h>
char *input = malloc(SIZE);
而且,你对feof
是错误的。
首先,您可以在以下选项中进行选择:
1、声明函数原型;
2.在main之前声明函数。
这样,函数在 main.to 中被识别。为了快速,我总是在 main.in 之前声明函数。在 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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.