求助:帮我检查程序。

bernice99 2004-08-11 10:33:38
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define count 5

void sort(struct sell_record a[],int num);
void writefile(struct sell_record a[]);
struct sell_record
{
char name[10];
float incc;
};

void main()
{
struct sell_record sell[count];
int i=1;
char con='y';

printf("北京市二手房交易信息录入\n");
while (con=='y'||con=='Y')
{
printf("输入第%d个二手交易信息",i);
printf("输入卖房人姓名:");
scanf("%s",&sell[i].name);
printf("输入卖房收入:");
scanf("%f",&sell[i].incc);
i++;
printf("是否继续输入(y/n)");
getchar();
scanf("%c",&con);
}
sort(sell,count);
for(i=0;i<count;i++)
{
printf("%s\t%.2f\n",&sell[i].name,&sell[i].incc);
}
writefile(sell);
}

void sort(struct sell_record a[],int num)
{
int i,j,noswap;
struct sell_record temp;
for(i=0;i<num-1;i++) {
noswap=1;
for(j=num-1;j>i;j--)
if (a[j].incc>a[j-1].incc)
{

temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
noswap=0;
}
if (noswap)
break;
}
}

void writefile(struct sell_record a[])
{
FILE *fp;
int i;
fp=fopen("1.dat","wb");
if (fp==NULL)
printf("can not open file!");
for(i=0;i<count;i++)
{
fwrite(&a[i],sizeof(struct sell_record),1,fp);
fclose(fp);
}
}


这是一个简单程序。从键盘输入卖房信息,然后按收入降序排序,然后将卖房信息写入文本文件。
但是,虽编译成功,但输入完信息后,排序后的收入全写0.00了,并且写入文本文件的是乱码的。
帮我改改好吗?谢谢!
...全文
146 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
maxcode 2004-09-04
  • 打赏
  • 举报
回复
老大
贴不是这样接地!!!!!
要给分得
bernice99 2004-09-03
  • 打赏
  • 举报
回复
结贴!
ForumExplorer 2004-08-13
  • 打赏
  • 举报
回复
UP~~~~~~~~
----------------------
《CSDN论坛新助手 CSDN's forum Explorer》
1、更快速的浏览
2、更方便地保存
3、更快捷的收/发短信
下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
更多说明:http://community.csdn.net/Expert/TopicView.asp?id=3255966
maxcode 2004-08-12
  • 打赏
  • 举报
回复
改过以后的代码:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define count 5

void sort(struct sell_record a[],int num);
void writefile(struct sell_record a[]);
struct sell_record
{
char name[10];
float incc;
};

void main()
{
struct sell_record sell[count];
int i=1;
char con='y';

printf("北京市二手房交易信息录入\n");
while (con=='y'||con=='Y')
{
printf("输入第%d个二手交易信息",i);
printf("输入卖房人姓名:");
scanf("%s",&(sell[i].name));
printf("输入卖房收入:");
scanf("%f",&(sell[i].incc));
i++;
printf("是否继续输入(y/n)");
getchar();
scanf("%c",&con);
}
sort(sell,count);
for(i=0;i<count;i++)
{
printf("%s\t%.2f\n",sell[i].name,sell[i].incc);
}
writefile(sell);
}

void sort(struct sell_record a[],int num)
{
int i,j,noswap;
struct sell_record temp;
for(i=0;i<num-1;i++) {
noswap=1;
for(j=num-1;j>i;j--)
if (a[j].incc>a[j-1].incc)
{

temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
noswap=0;
}
if (noswap)
break;
}
}

void writefile(struct sell_record a[])
{
FILE *fp;
int i;
fp=fopen("1.dat","wb");
if (fp==NULL)
printf("can not open file!");
for(i=0;i<count;i++)
{
fwrite(&a[i],sizeof(struct sell_record),1,fp);
}
fclose(fp);
}
沧海桑人 2004-08-12
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define count 5

void sort(struct sell_record a[],int num);
void writefile(struct sell_record a[], int curcount);

struct sell_record
{
char name[10];
float incc;
};

void main()
{
struct sell_record sell[count];
//int i=1;
int i = 0;
char con='y';
int curcount = 0;

printf("北京市二手房交易信息录入\n");
while (con=='y'||con=='Y')
{
printf("输入第%d个二手交易信息",i);
printf("输入卖房人姓名:");
scanf("%s",&sell[i].name);
printf("输入卖房收入:");
scanf("%f",&sell[i].incc);
i++;
printf("是否继续输入(y/n)");
getchar();
scanf("%c",&con);
curcount++;
}
sort(sell,curcount);
for(i=0;i<curcount;i++)
{
//printf("%s\t%.2f\n",&sell[i].name,&sell[i].incc);
printf("%s\t%.2f\n",sell[i].name,sell[i].incc);
}

writefile(sell, curcount);
}

void sort(struct sell_record a[],int num)
{
int i,j,noswap;
struct sell_record temp;
for(i=0;i<num-1;i++) {
noswap=1;
for(j=num-1;j>i;j--)
if (a[j].incc>a[j-1].incc)
{

temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
noswap=0;
}
if (noswap)
break;
}
}

void writefile(struct sell_record a[], int curcount)
{
FILE *fp;
int i;
char *buff;
buff = (char*)malloc(sizeof(float));
fp=fopen("1.dat","wb");
if (fp==NULL)
printf("can not open file!");
for(i=0;i<curcount;i++)
{
//fwrite(&a[i],sizeof(sell_record),1,fp);
fwrite(&a[i].name, strlen(a[i].name), 1, fp);
sprintf(buff, "%.2f", a[i].incc);
fwrite(buff, sizeof(float), 1, fp);
}
fclose(fp);
}
expert2000 2004-08-12
  • 打赏
  • 举报
回复
楼主可以结贴给分了。还有一点小问题,我也帮你改了,自己对照一下。

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define count 5

void sort(struct sell_record a[],int num);
void writefile(struct sell_record a[],int num);
struct sell_record
{
char name[10];
float incc;
};

int main()
{
struct sell_record sell[count];
int i=0;
char con='y';
int j =0;

printf("北京市二手房交易信息录入\n");
while (con=='y'||con=='Y')
{
printf("输入第%d个二手交易信息",i+1);
printf("输入卖房人姓名:");
scanf("%s",&(sell[i].name));
printf("输入卖房收入:");
scanf("%f",&(sell[i].incc));
i++;
printf("是否继续输入(y/n)");
getchar();
scanf("%c",&con);


}

sort(sell,i);
for(j=0;j<i;j++)
{
printf("sell[%d].name = %s\t sell[%d].incc = %.2f\n",j,sell[j].name,j,sell[j].incc);
getchar();
}
writefile(sell,i);
return 0;
}

void sort(struct sell_record a[],int num)
{
int i,j,noswap;

struct sell_record temp;
for(i=0;i<num;i++) {
noswap=1;
for(j=num-1;j>i;j--){
if (a[j].incc>a[j-1].incc)
{

temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;

noswap=0;
}}
if (noswap)
break;
}
}

void writefile(struct sell_record a[],int num)
{
FILE *fp;
int i;
fp=fopen("1.dat","wb");
if (fp==NULL)
printf("can not open file!");
for(i=0;i<num;i++)
{

fprintf(fp,"%s %f",a[i].name,a[i].incc);
}
fclose(fp);
}
expert2000 2004-08-12
  • 打赏
  • 举报
回复
把这句话:
fwrite(&a[i],sizeof(struct sell_record),1,fp);
改为:
fprintf(fp,"卖房人姓名 : %s 卖房收入 : %f \n",a[i].name,a[i].incc);
bernice99 2004-08-12
  • 打赏
  • 举报
回复
我从昨天到今天问了很久,还没找到答案,哎,郁闷!
你们就不能爽快点告诉我吗?
expert2000 2004-08-12
  • 打赏
  • 举报
回复
就是浮点数写入的时候出错了
bernice99 2004-08-12
  • 打赏
  • 举报
回复
可入文本文件的还是乱码的。怎么写才能变成正常的信息?要怎么转换

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧