undefined reference to a function

This is a discussion on undefined reference to a function within the C Programming forums, part of the General Programming Boards category; This is an unfinished file name immigration.c Code: #include <stdio.h> #include <string.h> #include <stdlib.h> #include "structure.h" #include "modifyImmigration.h" int main(int ...

  1. #1
    Registered User
    Join Date
    Aug 2009
    Posts
    27

    undefined reference to a function

    This is an unfinished file name immigration.c
    Code:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #include "structure.h"
    #include "modifyImmigration.h"
    
    int main(int argc,char* argv[])
    {
        int status = 0;
        char buffer[64];
        char codeString[64];
        DATA_T person[100];
        int check;
        char *newValue;
        int index;
        int modify;
    
        while(status != 6)
            {
            printf("\n\t\t    =========================================\n");
            printf("\n\t\t\tWelcome to Immigration Database!!\n\n");
            printf("\t\t    =========================================\n");
            printf("\t\t\t    Choose what you want to do:\n");
            printf("\t\t    =========================================\n\n");
            printf("\t\t\t    1)Display all records\n");
            printf("\t\t\t    2)Search an existing record\n");
            printf("\t\t\t    3)Add a new record\n");
            printf("\t\t\t    4)Modify an existing record\n");
            printf("\t\t\t    5)Delete an existing record\n");
            printf("\t\t\t    6)Exit the program\n");
            printf("\n\t\t    =========================================\n");
    
    
            printf("\n\t\t    Press 1,2,3,4,5 or 6: ");
            fgets(buffer,64,stdin);
            sscanf(buffer,"%d",&status);
    
            if(status == 1)
                {
    
                }
            else if(status == 2)
                {
                }
            else if(status == 3)
                {
                }
            else if(status == 4)
                {
                Edit(argc, argv, newValue, index, modify, person);
                }
            else if(status == 5)
                {
                }
            else if(status == 6)
                {
                printf("\n\n\t\t    =========================================");
                printf("\n\t\t        Thank you for using our program :)");
                printf("\n\t\t    =========================================");
                exit(0);
                }
            else
                {
                printf("\nError! Please type in the number between 1 to 6.\n");
                }
            }
    }
    This is modifyImmigration.c
    Code:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #include "structure.h"
    
    void Edit(int argc, char* argv[], char *newValue, int index, int modify, DATA_T person[100])
    {
        char* inputFile;                 /*Pointer inputFile*/
        char* outputFile;                /*Pointer outputFile*/
        char inputBuffer[128];
        int i = 0;
        int j = 0;
        int line = 0;
    
        FILE* pInfile = NULL;            /*Set pInfile to be NULL*/
        FILE* pOutfile = NULL;           /*Set pOutfile to be NULL*/
    
        /*Copy files from arguement array to local variables*/
        inputFile = strdup(argv[1]);
        outputFile = strdup(argv[1]);
    
        /*Check arguement to make sure that we have the right number. If not,print error message*/
        if(argc != 2)
            {
            printf("Error, You do not supply the correct arguments\n");
            exit(1);
            }
    
        /*Check to make sure that inputFile or outputFile is not NULL. If it is. print error message*/
        if((inputFile == NULL) || (outputFile == NULL))
            {
            printf("Error, Memory allocation error in strdup\n");
            exit(1);
            }
    
        /*Open input file*/
        pInfile = fopen("person.txt","r");
    
        /*Check that the open succeeded, If not,print error message*/
        if(pInfile == NULL)
            {
            printf("Error, can not open file\n");
            }
    
        else
            {
            /*change to be stored in buffer*/
            while(fgets(inputBuffer,128,pInfile) != NULL)
                {
                sscanf(inputBuffer, "%s %s %s %s %s %s %s",person[i].passportID, person[i].firstName,
                person[i].lastName, person[i].expireDate, person[i].entryDate, person[i].exitDate,
                person[i].visaType);
    
                i++;
                }
    
            line = i;
            }
    
        fclose(pInfile);
    
        printf("Which item do you need to modify?\n");
        printf("press 1 - Modify Firstname\n");
        printf("press 2 - Modify Lastname\n");
        printf("press 3 - Modify Passport expiration date\n");
        printf("press 4 - Modify Date of last entry into Thailand\n");
        printf("press 5 - Modify Date of last exit from Thailand\n");
        printf("Which item do you need to modify: ");
    
        fgets(inputBuffer,128,stdin);
        sscanf(inputBuffer,"%d",&modify);
    
        while((modify <= 0) || (modify >= 6))
            {
                printf("Sorry, You have to press 1,2,3,4, or 5. Try again");
                printf("Which item do you need to modify: ");
                fgets(inputBuffer,128,stdin);
                sscanf(inputBuffer,"%d",&modify);
            }
    
        switch(modify)
            {
            case 1:     /*name*/
                strcpy(person[index].firstName, newValue);
                break;
            case 2:     /*lastname*/
                strcpy(person[index].lastName, newValue);
                break;
            case 3:     /*date 1*/
                strcpy(person[index].expireDate, newValue);
                break;
            case 4:     /*date 2*/
                strcpy(person[index].entryDate, newValue);
                break;
            case 5:     /*date 3*/
                strcpy(person[index].exitDate, newValue);
                break;
            case 6:     /*TypePas*/
                strcpy(person[index].visaType, newValue);
                break;
            }
    
    
        pOutfile = fopen("person.txt","w");
    
        /*Check to make sure that inputFile or outputFile is not NULL. If it is. print error message*/
        if((inputFile == NULL) || (outputFile == NULL))
            {
            printf("Error, Memory allocation error in strdup\n");
            exit(1);
            }
    
            for(j = 0; j < line; j++)
                {
                fprintf(pOutfile,"%s %s %s %s %s %s %s\n",person[j].passportID, person[j].firstName,
                person[j].lastName, person[j].expireDate, person[j].entryDate, person[j].exitDate,
                person[j].visaType);
                }
        fclose(pOutfile);
    
    }
    This is modifyImmigration.h
    Code:
    void Edit(int argc, char* argv[], char *newValue, int index, int modify, DATA_T person[100]);
    and this is structure.h
    Code:
    typedef struct
    {
        char passportID[16];        /* Passport ID of the user */
        char firstName[30];         /* First name of the user */
        char lastName[30];          /* Last name of the user */
        char expireDate[10];        /* Expiration date of the passport */
        char entryDate[10];         /* Date of last entry into Thailand */
        char exitDate[10];          /* Date of last exit from Thailand */
        char visaType[30];          /* Type of visa */
    } DATA_T;
    Why is there an error: undefine reference to '_Edit'

    Thank you for your help

  2. #2
    Guest Sebastiani's Avatar
    Join Date
    Aug 2001
    Location
    Waterloo, Texas
    Posts
    5,699
    You need to compile modifyImmigration.c into an object file, and then pass this along to the linker when you compile or link your main program.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 4
    Last Post: 05-13-2011, 08:28 AM
  2. In over my head
    By Shelnutt2 in forum C Programming
    Replies: 1
    Last Post: 07-08-2008, 06:54 PM
  3. We Got _DEBUG Errors
    By Tonto in forum Windows Programming
    Replies: 5
    Last Post: 12-22-2006, 04:45 PM
  4. Game Pointer Trouble?
    By Drahcir in forum C Programming
    Replies: 8
    Last Post: 02-04-2006, 01:53 AM
  5. Problem with Visual C++ Object-Oriented Programming Book.
    By GameGenie in forum C++ Programming
    Replies: 9
    Last Post: 08-29-2005, 11:21 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21