功能原型
int rows(int *n);
void filedata(int numr, char *name[]);
函数调用
int main(void)
{
int numberofrows;
char *name[10];
rows(&numberofrows);
filedata(numberofrows,name);
for(int i=0;i<numberofrows;i++)
{
puts(name[i]);
}
}
第一个功能正常工作,然后计算文件中的行数
int rows(int *n)
{
FILE *infile;
char ch;
int count=0;
infile=fopen("data","r");
if(infile==NULL)
{
printf("File not Found");
}
else
{
for(ch=fgetc(infile);ch!=EOF;ch=fgetc(infile))
{
if(ch=='\n')
{
count=count+1;
}
}
fclose(infile);
}
*n=count;
}
第二个函数为每一行动态分配内存。但该计划不起作用。我不明白为什么?有人可以指出错误并解释以下代码中缺少的内容吗?
void filedata(int numr,char *name[])
{
FILE *infile;
infile=fopen("data","r");
if(infile==NULL)
{
printf("File not Found");
}
else
{
for(int i=0;i<numr;i++)
{
name[i]=malloc(Number of bytes?);
fgets(name[i],Number of characters?,infile);
}
}
}
答案 0 :(得分:0)
你需要为你想要阅读的每一行分配内存。除此之外,我建议不要只读一个字符来查看是否达到文件末尾。通过一些轻微的调整,您的代码可能如下所示:
function client(firstName, ... , familyNotes) { // no brackets after familyNotes