有关C语言中文件读取的问题
这是程序主代码voidmain(){FILE*fp;fp=fopen("通讯录.txt","r");do{fscanf(fp,"%s%s%s%s%s",student[n...
这是程序主代码
void main()
{
FILE *fp;
fp=fopen("通讯录.txt","r");
do
{
fscanf(fp, "%s%s%s%s%s", student[num].number, student[num].name, student[num].sex, student[num].sushe, student[num].phone);
++num;
} while (!feof(fp));
fclose(fp);
count=num;
function_select();
}
下面是输出函数
void search()
{
FILE *fp;
struct student *p;
fp = fopen("通讯录.txt", "rb");
printf("\t学号\t姓名\t电话号码\t性别\t宿舍号\n");
for(p=student;p<student+num;p++)
printf("\t%s\t%s\t%s\t%s\t%s\n",p->number,p->name,p->phone,p->sex,p->sushe);
fclose(fp);
我文件中有三组数据..可是为什么输出时只有一组数据.. 展开
void main()
{
FILE *fp;
fp=fopen("通讯录.txt","r");
do
{
fscanf(fp, "%s%s%s%s%s", student[num].number, student[num].name, student[num].sex, student[num].sushe, student[num].phone);
++num;
} while (!feof(fp));
fclose(fp);
count=num;
function_select();
}
下面是输出函数
void search()
{
FILE *fp;
struct student *p;
fp = fopen("通讯录.txt", "rb");
printf("\t学号\t姓名\t电话号码\t性别\t宿舍号\n");
for(p=student;p<student+num;p++)
printf("\t%s\t%s\t%s\t%s\t%s\n",p->number,p->name,p->phone,p->sex,p->sushe);
fclose(fp);
我文件中有三组数据..可是为什么输出时只有一组数据.. 展开
展开全部
首先说数组:
你认为什么是一维数组,什么是多维数组?
多维数组就是每一个元素又是一个数组的数组,他在内存中是存储在一片连续的内存块中的(动态多维数组除外)。
其次说说输入:
scanf在接受除了%s和%c的时候,都是可以忽略掉回车和空格的;在接受%s和%c中,空格和回车都作为终止符,如果你需要向文件添加/读取一个空车或回车,可以使用fputc/fgetc来完成
之后,说说你的程序:
你的程序貌似和文件没有关系,你只是向文件中写入了数据,之后你输出的还是你结构体数组中的局部变量。第一,你向文件写入的时候没有加入换行,回车之类的控制符,第二,结构体数据中的变量和文件中的数据不是同一个概念,所以你程序本意就是错误的
最后,建议做通讯录的时候不要使用数组,用动态链表,毕竟数据总数是不确定的
满意请采纳,不满意请追问
你认为什么是一维数组,什么是多维数组?
多维数组就是每一个元素又是一个数组的数组,他在内存中是存储在一片连续的内存块中的(动态多维数组除外)。
其次说说输入:
scanf在接受除了%s和%c的时候,都是可以忽略掉回车和空格的;在接受%s和%c中,空格和回车都作为终止符,如果你需要向文件添加/读取一个空车或回车,可以使用fputc/fgetc来完成
之后,说说你的程序:
你的程序貌似和文件没有关系,你只是向文件中写入了数据,之后你输出的还是你结构体数组中的局部变量。第一,你向文件写入的时候没有加入换行,回车之类的控制符,第二,结构体数据中的变量和文件中的数据不是同一个概念,所以你程序本意就是错误的
最后,建议做通讯录的时候不要使用数组,用动态链表,毕竟数据总数是不确定的
满意请采纳,不满意请追问
追问
如果我把while里的条件改为num<=50..是可以读取全部数据的..但!feof(fp)就只读了一个数据..后来我输出num发现也只有1..我对链表还不太熟悉..只有链表才能读取全部数据吗?
追答
不是只有链表才可以读取全部数据,是使用适当的数据结构会比较方便。
不是问为什么只有一组数据吗,是因为你结构体中存储的只有一组数据,你若想使用其他数据,就要用变量就文件中的数据关联起来,就是说,你输出的只是结构体中存储的值,他们的值只是文件中数据的一个小集合,所以并不是三组,而是一组,你至少需要把文件中的三组数据全部保存到变量里在输出吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询