【发布时间】:2019-01-10 19:07:19
【问题描述】:
我编写了一个从文件中读取值的程序。文件中的数据格式如下。
100 Full Name SomeDetails.
234 Full Name SomeDetails
以下是我编写的程序。
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 10
struct student
{
int rollno;
char name[20];
char course[25];
};
int main()
{
FILE *fptr;
fptr=fopen("records.txt","r");
struct student s[10];
int i=0,tstudent=0;
char che;
char line[100];
//SECTION : 1.1 -> READING NUMBER OF LINES
while(!feof(fptr))
{
che=fgetc(fptr);
if(che=='\n')
{
tstudent++;
}
}
printf("Total Lines in File = %d\n",tstudent);
fclose(fptr);
//SECTION : 1.2 -> READING RECORDS FROM FILE
fptr=fopen("records.txt","r");
char newString[20][20];
int ii,j,ctr;
j=0;
ctr=0;
for(i=0; i<tstudent; i++)
{
fgets(line,100,fptr);
printf("Value of Line %d = %s",i,line);
for(ii=0; ii<=(strlen(line)); ii++)
{
// if tab or NULL found, assign NULL into newString[ctr]
if(line[ii]=='\t'||line[ii]=='\0')
{
newString[ctr][j]='\0';
ctr++; //for next word
j=0; //for next word, init index to 0
}
else
{
newString[ctr][j]=line[ii];
j++;
}
}
}
for(ii=0; ii < ctr; ii++)
{
printf("\n%s",newString[ii]);
}
printf("Value of ctr = %d",ctr);
fclose(fptr);
}
上面的代码工作正常,但所有代码都在主函数中,但我想创建一个单独的函数,可以从主文件中调用,并将文件的每个数据以二维或一维数组作为返回值返回.
任何帮助/建议将不胜感激。
我尝试将 CODE 作为一个单独的函数来使用.. 不工作。
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
char readfile(int tstudent,FILE* filename)
{
//FUNCTION TO READ RECORDS FROM FILE.
FILE *fptr;
int i,k;
char line[100];
char newString[20][20];
int j=0,ctr=0;
fptr=fopen("records.txt","r");
for(i=0; i<tstudent; i++)
{
fgets(line,100,fptr);
printf("Value of Line %d = %s",i,line);
for(k=0; k<=(strlen(line)); k++)
{
// if tab or NULL found, assign NULL into newString[ctr]
if(line[k]=='\t'||line[k]=='\0')
{
newString[ctr][j]='\0';
ctr++; //for next word
j=0; //for next word, init index to 0
}
else
{
newString[ctr][j]=line[k];
j++;
}
}
}
return newString;
}
我在主函数中定义了一个新变量 char results[].. 并尝试如下调用该函数
results[]=readfile(tstudent,fptr)
但是当试图读取结果时..它显示垃圾
【问题讨论】:
-
不要向我们展示 工作 代码。显示 非工作 之一。请正确格式化。
-
两点:请看Why is
while ( !feof (file) )always wrong?。而char che应该是int che,因为这是fgetc返回的类型。 -
@EugeneSh。我已将我尝试过的代码添加为单独的函数,但它不起作用。
-
return newString;- 我怀疑。您不能返回本地定义的数组。没有寻找其他问题。 -
@EugeneSh。我在主函数中定义了一个新变量 char results[] .. 并尝试将该函数称为 results[]=readfile(tstudent,fptr).. 但是在尝试读取结果时.. 它显示垃圾。
标签: c arrays function multidimensional-array