- program stores strings of arrays. strings can be names, addresses, etc.
- program shows selection screen that allows the user to enter strings(max. of 16 strings have a maximum of 128 characters), remove a string from the database, view string s in the database, search a string and quit the program.
- last the program allow the user to save strings and load strings to and from a text file. this requirements requires the use of I/O
EMERGENCY!!!How to make a database using string function in C
|
Go4Expert Member
|
|
| 29Jan2010,11:34 | #1 |
|
I have a homework which should have the following:
|
|
Go4Expert Member
|
|
| 29Jan2010,14:40 | #2 |
|
Code:
#include<stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
typedef struct {
char name[30];
char company[50];
char address[200];
char pin[7];
char web[30];
}entry;
char name[30];char company[50];
FILE *fpt;int menu(void);
entry *ptr,commodity;
int n=sizeof(entry);char ch,y;
void edit(entry *);
void main()
{
int choice;
do
{
choice=menu();
switch(choice)
{
case 1:ptr=(entry *)malloc(sizeof(entry));
fpt=fopen("data5.bin","a");
printf("\nEnter the name of the commodity:");
scanf("%s",ptr->name);
printf("\nEnter the name of the producing company:");
scanf("%s",ptr->company);
printf("\nEnter the address of the producing company:");
scanf("%s",ptr->address);
printf("\nEnter the pincode:");
scanf("%s",ptr->pin);
printf("\nEnter the website of the producing company:");
scanf("%s",ptr->web);
fwrite(ptr,n,1,fpt);printf("ENTERED\n");
fclose(fpt);
continue;
case 2:ptr=(entry *)malloc(sizeof(entry));
fpt=fopen("data5.bin","r+");
do
{
if (fread(&ptr->name, sizeof(ptr->name), 1, fpt) == 1 &&
fread(&ptr->company, sizeof(ptr->company), 1, fpt) == 1 &&
fread(&ptr->address, sizeof(ptr->address), 1, fpt) == 1 &&
fread(&ptr->pin, sizeof(ptr->pin), 1, fpt) == 1 &&
fread(&ptr->web, sizeof(ptr->web), 1, fpt) == 1)
{
printf("\n\nThe name of the commodity:");
printf("%s",ptr->name);
printf("\nThe name of the producing company:");
printf("%s",ptr->company);
printf("\nThe address of the producing company:");
printf("%s",ptr->address);
printf("\nPincode:");
printf("%s",ptr->pin);
printf("\nWebsite of the producing company:");
printf("%s",ptr->web);
printf("\nWant to EDIT this entry?(Enter y/n):");
ch=getchar();
if(ch==y)
edit(ptr);
}
else if (feof(fpt))
{
printf("\n\nfinished reading file!\n");
break;
}
else {
printf("an error occured while reading the file!\n");
break;
}
} while (1);
fclose(fpt);continue;
case 3:printf("\nThank You for using!");exit(1);
}
}while(choice==1||choice==2);
getch();
}
int menu(void)
{
int choice;
do{
printf("Enter your choice:\n");
printf("1.ADD a entry\n");
printf("2.DISPLAY cum EDIT\n");
printf("3.EXIT\n");
scanf("%d",&choice);
}while(choice!=1 && choice!=2 && choice!=3);
return(choice);
}
void edit(entry *ptr)
{
printf("\nWant to EDIT name of commodity?(y/n):");
ch=getchar();
if(ch==y)
{
printf("\nEnter new commodity name:");
scanf("%s",name);
ptr->name=name;
}
printf("\nWant to EDIT name of company?(y/n):");
ch=getchar();
if(ch==y)
{
printf("\nEnter new company name:");
scanf("%s",company);
ptr->company=company;
} //....etc..etc.
fwrite(ptr,n,1,fpt);
return;
}
|
|
Contributor
|
|
| 29Jan2010,21:25 | #3 |
|
What, specifically, is the problem?
|
|
Go4Expert Member
|
|
| 30Jan2010,11:29 | #4 |
|
my program does not compile..there are errors in line 102 and 110..
ptr->name=name; ptr->company=company; these are the code which i am having trouble.. |
|
Contributor
|
|
| 30Jan2010,23:24 | #5 |
|
Those are pointers to arrays of characters. the equal ('=') operator only works on POD (plain old data) types or classes that implement the equal operator. For C-strings, you need the standard C library string copy functions like strncpy():
Code:
strncpy(ptr->name,name,29); //... strncpy(ptr->company,company,49); |
