| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2198 人关注过本帖
标题:用scanf能否做到?
只看楼主 加入收藏
xiao_2008
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-4-22
收藏
 问题点数:0 回复次数:23 
用scanf能否做到?

要求:
从文件IN.dat读数据到一个数据结构数组
IN.dat文件如下:

代码如下:请填写read()函数内容,
#include<stdio.h>
#include<stdlib.h>
#define SIZE 100
//销售记录
struct sellrecord
{
char PID[4]; /*产品代码*/
char Name[10]; /*产品名称*/
float Price; /*单价*/
int Num; /*数量*/
float sum ; /*金额*/
};
//定义结构体数组 100条销售记录
struct sellrecord recod[SIZE] ;

//系统菜单
void menu()
{
printf("\n");
printf("\n");
printf("*************商业管理系统客户端************************\n");
printf("\n");
printf(" 功能菜单:\n");
printf("\n");
printf(" S.查看销售记录\n");
printf(" A.销售记录排序\n");
printf(" B.销售记录统计(价格、销售数量、销售金额)\n");
printf(" C.计算总销售金额\n");
printf(" D.形成简单的报表\n");
printf(" E.输出报表到控制台和文件OUT.DAT中\n");
printf(" F.传送报表到服务器端\n");
}
//查看销售记录,从文件中读并防到数组当中
void read()
{
char ch;
FILE *fp;
int i=0;
if((fp=fopen("IN.dat","r"))==NULL) /* 打开一个由argv[1]所指的文件*/
{
printf("not open");
exit(0);
}

printf("产品 单价 数量 金额\n");
while(!feof(fp))
{
fscanf(fp,"PID=%s,Name=%s,Price=%f,Num=%d,sum=%f;\n",recod[i].PID,recod[i].Name,&recod [i].Price,&recod[i].Num,&recod[i].sum);
printf("%s,%s,%f,%d,%f\n",recod[i].PID,recod[i].Name,recod[i].Price,recod[i].Num,recod[i].sum);
i++;
}

for(i=0;i<SIZE;i++)
{
printf("%s,%s,%f,%d,%f\n",recod[i].PID,recod[i].Name,recod[i].Price,recod[i].Num,recod[i].sum);
}

fclose(fp);
printf("\n");
getchar();
}

//主函数
void main()
{
menu();
char order;
while( order!='Q') /*接受命令*/
{
order=getchar();
switch(order)
{
case 'S':read();break;
case 'A':sort();break;
case 'T':testread();break;

}
}
}

搜索更多相关主题的帖子: scanf dat include 系统 数据结构 
2007-07-29 16:18
xiao_2008
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-4-22
收藏
得分:0 

IN.dat 内容
PID=A010,Name=Peng,Price=1.50,Num=1,sum=;
PID=A007,Name=Peng,Price=1.50,Num=1,sum=;
PID=B001,Name=car,Price=1.50,Num=10,sum=;
PID=A003,Name=Peng,Price=1.50,Num=5,sum=;
PID=0035,Name=mice,Price=1.10,Num=56,sum=;
PID=A001,Name=Peng,Price=1.50,Num=2,sum=;
PID=0002,Name=book,Price=2,Num=2,sum=;
PID=A001,Name=Peng,Price=1.50,Num=11,sum=;
PID=0034,Name=snake,Price=23,Num=56,sum=;
PID=A001,Name=Peng,Price=1.50,Num=17,sum=;
PID=0003,Name=cup,Price=1.2,Num=3,sum=;


看动画片
2007-07-29 16:19
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
一般情况下不能

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-07-30 08:38
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 

我们用代码说话


#include <stdio.h>

struct sellrecord
{
char PID[5]; /*产品代码*/
char Name[10]; /*产品名称*/
float Price; /*单价*/
int Num; /*数量*/
float sum ; /*金额*/
}x;

int main()
{
while(scanf(\"PID=%[^,],Name=%[^,],Price=%f,Num=%d,%*[^\n]%*c\",&x.PID,&x.Name,&x.Price,&x.Num)){
printf(\"PID=%s,Name=%s,Price=%.2f,Num=%d,sum=;\n\",x.PID,x.Name,x.Price,x.Num);
}
}

2007-07-30 14:15
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
楼上请注意:数据在文件

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-07-30 15:52
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
回复:(卧龙孔明)楼上请注意:数据在文件中
你认为控制台读入和文件读入有区别吗?你知道设备独立性吗?你知道freopen函数吗?
2007-07-30 16:04
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
有趣,有趣,C区好长时间没这种境象了

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-07-30 16:13
星星鱼虾蟹
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2007-6-2
收藏
得分:0 
回复:(leeco)回复:(卧龙孔明)楼上请注意:数据在...
这也给你讲过去了,服啊~~~~

2007-07-30 16:19
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 

继承自UNIX系统的设计哲学,所有的硬件设备都被当作文件处理,C程序也会默认打开三个文件:stdin,stdio,stderr.
stdin默认定向到键盘,stdio定向到显示器,所以你可以用键盘做输入,但是键盘和别的文件一样,键盘也是文件,所以数据是从键盘读入还是数据文件读入是一样的,freopen函数可以把标准输入重定向到普通文件中,然后,scanf()函数就不从键盘读了,是从普通文件读了.sigh!我跟唐僧一样罗嗦了.

leeco
说的就是这个意思,我是唐僧所以说了一大堆.

2007-07-30 16:51
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

这一贴可以说近几个月C区最有价值的贴子之一


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-07-30 17:14
快速回复:用scanf能否做到?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016879 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved