Search code examples
cfilescanffopenfile-handling

fscanf() fclose() or reading file exit and ends program


Below is a part of my code which is having issues with file handling. The file opens fine with fopen but when I try to read or just close the file my program exits without an error. I tried to run this code independently and it works fine. Would really appreciate if someone could help me out which pointing out what I am doing wrong.

    int ctrlSend(char *etherPort, uint8_t *inPayload, int payloadLen, int vlanID) 
    {
    char intName [10]; // Interface name from file
    int intVlan; // Interface VLAN from file
    printf("In ctrlSend\n");

    FILE * pFile; // File pointer
    pFile = fopen ("vlan.conf","r");

    while(!feof(pFile))
    {
      fscanf(pFile,"%s %d",intName,&intVlan)
      printf("In ctrlSend while loop");
    }


    fclose (pFile);
    return 0;
    }

UPDATE1: Updated above code

UPDATE2: Alternate code below which has same issue.

    int ctrlSend(char *etherPort, uint8_t *inPayload, int payloadLen, int vlanID) 
    {

    printf("In ctrlSend\n");

    char intName [10]; // Interface name from file
    int intVlan; // Interface VLAN from file
    FILE * pFile; // File pointer
    pFile = fopen ("vlan.conf","r");

    while (fscanf (pFile,"%s %d",intName,&intVlan) == 2)
    {
        printf("In ctrlSend while loop");
    }


    fclose (pFile);
    return 0;
    }

UPDATE3: Seems like the file is not opening, looking into it.


Solution

  • Check whether the file exists or not. You should always check whether File pointer is NULL or not after opening the file. I think your program is unable to open the file and you are trying to use the file pointer without checking which is causing undefined behavior.