Code:
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#define MPS 10 //Max Part Size
#define MSS 10 //Max Supplier Size
typedef struct
{
char name[30];
char code[5];
char street[30];
char city[25];
char state[3];
int zip;
int num;
}SPLR;
typedef struct
{
char code[5];
int qty;
char s1_code[5];
char s2_code[5];
int num;
}PART;
void dis_s(SPLR* ptr1);
void read_p(PART* ptr, char* file_name);
void dis_p(PART* ptr);
void read_s(SPLR* ptr1, char* file_name);
void process(SPLR* ptr1);
int main()
{
PART e[MPS];
SPLR e2[MSS];
read_p(&e[0], "parts.data");
read_s(&e2[0], "suppliers.data");
process(&e[0], &e2[0]);
return 0;
}
void read_p(PART* ptr, char* file_name)
{
int x=0;
FILE *fpr;
char buf[20];
fpr=fopen(file_name,"r");
while(!feof(fpr))
{
fscanf(fpr, "%s", &ptr[x].code[0]);
fscanf(fpr, "%d", &ptr[x].qty);
fscanf(fpr, "%s", &ptr[x].s1_code[0]);
fscanf(fpr, "%s", buf);
if (strcmp(buf, "--") != 0)
{
strcpy(ptr[x].s2_code, buf);
}
else
{
ptr[x].s2_code[0] = '\0';
x++;
continue;
}
fscanf(fpr, "%s", buf);
x++;
}
ptr->num=x-1;
fclose(fpr);
return;
}
void read_s(SPLR* ptr1, char* file_name)
{
int x;
FILE *fsr;
char buf[50];
fsr=fopen(file_name,"r");
while(!feof(fsr)&&x<=MSS)
{
fscanf(fsr, "%s", &ptr1[x].name[0]);
fscanf(fsr, "%s", &ptr1[x].code[0]);
fscanf(fsr, "%s", &ptr1[x].street[0]);
fscanf(fsr, "%s", &ptr1[x].city[0]);
fscanf(fsr, "%s", &ptr1[x].state[0]);
fscanf(fsr, "%d", &ptr1[x].zip);
fscanf(fsr, "%s", buf);
x++;
}
ptr1->num=x-1;
printf("%d", ptr1->num);
fclose(fsr);
return;
}
void dis_p(PART* ptr)
{
int i=0;
while(i<=ptr->num-1)
{
printf("%s\n%d\n%s\n%s\n--\n", ptr[i].code, ptr[i].qty, ptr[i].s1_code,
ptr[i].s2_code);
i++;
}
}
void dis_s(SPLR* ptr1)
{
int i=0;
while(i<=ptr1->num-1)
{
printf("%s\n%s\n%s\n%s\n%s\n%d\n--\n", ptr1[i].name, ptr1[i].code,
ptr1[i].street, ptr1[i].city, ptr1[i].state, ptr1[i].zip);
i++;
}
}
void process(PART* ptr, SPLR* ptr1)
{
int x;
char *pcode, *scode;
FILE *fpr;
pcode=(char*)malloc(20*sizeof(char));
scode=(char*)malloc(20*sizeof(char));
fpr=fopen("parts.data","r");
FILE *fsr;
fsr=fopen("suppliers.data","r");
printf(" =====Here are you choices=====\n"
"1. Provide supplier information for a part\n"
"2. Provide part supplied by a supplier\n"
"3. Add new supplier\n"
"4. Add new part\n"
"5. Add supplier for a part\n"
"6. Display supplier list\n"
"7. Display part list\n"
"0. Quit\n"
"================================\n"
"\n"
"Enter your choice:");
scanf("%d", &x);
switch(x)
{
/* case 1:
printf("Please enter the part code in question");
scanf("%s", pcode);
dis_sfp(ptr, ptr1, pcode);
break;
case 2:
printf("Please enter the supplier code in question");
scanf("%s", scode);
dis_pbs(ptr, scode);
break;
case 3:
break;
case 4:
break;
case 5:
asp(ptr, scode, pcode);
break;*/
case 6:
dis_s(ptr1);
break;
case 7:
dis_p(ptr);
case 0:
printf("Goodbye");
break;
default:
printf("Please make a selection from the designated list.\n");
break;
}
}
when I run the dis_s() function it just prints out garbage until it segments. starts with a bunch of 0 and newlines until it starts printing locations on my computer...... it worked on campus with debian and I only copied it from gmail to my computer so I really don't understand whats up(im on mint). can anyone help.