Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   EMERGENCY!!!How to make a database using string function in C (http://www.go4expert.com/forums/emergencyhow-database-using-string-t20803/)

askmewhy25 29Jan2010 11:34

EMERGENCY!!!How to make a database using string function in C
 
I have a homework which should have the following:
  • 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

askmewhy25 29Jan2010 14:40

Re: EMERGENCY!!!How to make a database using string function in C
 
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;
}


Gene Poole 29Jan2010 21:25

Re: EMERGENCY!!!How to make a database using string function in C
 
What, specifically, is the problem?

askmewhy25 30Jan2010 11:29

Re: EMERGENCY!!!How to make a database using string function in C
 
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..

Gene Poole 30Jan2010 23:24

Re: EMERGENCY!!!How to make a database using string function in C
 
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);



All times are GMT +5.5. The time now is 21:34.