Hi everyone.. Can you help me with this problem. I want to sort a file but after sorting all my data are lost and I get many 000000000. Please help.
Here's my code...
Code:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
struct info
{
char pnum[50];
char pdes[50];
float price;
} e, sort[100];;
void view()
{
FILE *fp = fopen("master.dat","r");
while((fscanf(fp, "%s\t\t%[^\t]\t\t\t%f\n", &e.pnum, &e.pdes, &e.price)) != EOF)
{
printf("%s\t\t%s\t\t%0.2f\n", e.pnum, e.pdes, e.price);
}
fclose(fp);
}
void sorting()
{
int count1, count2, count3 = 0;
char save1[50];
char save2[50];
float save3 = 0;
FILE *fp = fopen("master.dat", "r");
FILE *temp = fopen("temp.dat", "w");
while((fscanf(fp, "%s\t\t%[^\t]\t\t\t%f\n", &e.pnum, &e.pdes, &e.price)) != EOF)
{
strcpy(sort[count3].pnum, e.pnum);
strcpy(sort[count3].pdes, e.pdes);
sort[count3].price = e.price;
count3++;
}
for(count1 = 0; count1 < count3; count1++)
{
for(count2 = count1 + 1; count2 < count3; count2++)
{
if(strcmp(sort[count1].pnum, sort[count2].pnum) > 0)
{
strcpy(save1, sort[count1].pnum);
strcpy(save2, sort[count1].pdes);
save3 = sort[count1].price;
strcpy(sort[count1].pnum, sort[count2].pnum);
strcpy(sort[count1].pdes, sort[count2].pdes);
sort[count1].price = sort[count2].price;
strcpy(sort[count2].pnum, save1);
strcpy(sort[count2].pdes, save2);
sort[count2].price = save3;
}
}
}
for(count1 = 0; count1 <= count3; count1++)
{
fprintf(temp, "%s\t\t%s\t\t%0.2f\n", sort[count1].pnum, sort[count1].pdes, sort[count1].price);
}
remove("master.dat");
rename("temp.dat","temp.dat");
fclose(fp);
fclose(temp);
}
int main()
{
sorting();
view();
getch();
return 0;
}
MASTER.DAT
Code:
IBMGE12000 IBM 101 Motherboard 4500.00
BOKA118001 BOKA 118 Speakers 3500.00
ASUS101112 ASUS 110 Motherboard 4500.00
BOKA118001 BOKA 118 Speakers 3500.00