在看我们网站公布的电话簿程序有几点搞不懂的地方,希望大家能够指点指点我:
fscanf(fp,”%d”,&n); /*读入记录数*/
for(i=0;i<n;i++)
fscanf(fp,”%20s%30s%10s%10s”,t[i].name,t[i].units,t[i].tele,t[i].relation); /*按格式读入记录*/
fclose(fp); /*关闭文件*/
printf(“You have success read data from file!!!\n”); /*显示保存成功*/
为什么要写这句:
fscanf(fp,”%d”,&n);
2/*按序号显示记录函数*/
/*void display(ADDRESS t[])
{
int id,n;
FILE *fp; /*指向文件的指针*/
//if((fp=fopen(“record.txt”,”rb”))==NULL) /*打开文件*/
//{
// printf(“can not open file\n”); /*不能打开文件*/
//exit(1); /*退出*/
//}
//printf(“Enter order number…\n”); /*显示信息*/
//scanf(“%d”,&id); /*输入序号*/
//fscanf(fp,”%d”,&n); /*从文件读入记录数?*/
//if(id>=0&&id<n) /*判断序号是否在记录范围内*/
//{
// fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/
//print(t[id]); /*调用输出函数显示该记录*/
//printf(“\r\n”);
//}
//else
// printf(“no %d number record!!!\n “,id); /*如果序号不合理显示信息*/
//fclose(fp); /*关闭文件*/
//}
为什么要用fseek函数,我觉得不用也可以,直接输出t[id]就好了啊.
>> 本文固定链接: http://www.vcgood.com/archives/1927
>> 转载请注明: jinqiangke 2007年11月16日 于 C语言帝国 发表
1)
文件格式,第一行表示有几条记录!
[code]
3
name units tele relation
name units tele relation
name units tele relation
[/code]
2)
这段代码有问题!!!
流程应该是这样的:
读入记录条数和数据备用,
显示指定的条数!
[code]
fscanf(fp,"%d",&n); /*读入记录数*/
for(i=0;i<n;i++)
fscanf(fp,"%20s%30s%10s%10s",t[i].name,t[i].units,t[i].tele,t[i].relation); /*按格式读入记录*/
fclose(fp); /*关闭文件*/
scanf("%d",&id); /*输入序号*/
if(id>=0&&id<n) /*判断序号是否在记录范围内*/
{
print(t[id]); /*调用输出函数显示该记录*/
printf("\r\n");
}
[/code]