Biljana Icovski
Biljana Icovski

Reputation: 49

can´t open txt file

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char c[1000];
    FILE *fptr;

    if ((fptr = fopen("program.txt", "r")) == NULL)
    {
        printf("Error! opening file");
        // Program exits if file pointer returns NULL.
        exit(1);
    }

    // reads text until newline
    fscanf(fptr,"%[^\n]", c);
    printf("Data from the file:\n%s", c);
    fclose(fptr);
    return 0;
}

Output is Error! opening file

I have program and txt file in same dir. How can I direct access to that file?

Upvotes: 0

Views: 110

Answers (3)

Zahid Khan
Zahid Khan

Reputation: 3223

I made a quick run of your program on TURBOC++ by Borland and it executed without complaining any sort of Warning or Error
As mentioned in the earlier posted answers, you should replace printf by perror

    CURRENT                              REPLACE BY
printf("Error! opening file");    perror("Error! Opening File.");    

As in your case of file not found printf("Error! opening file"); will result in :

Error! Opening file.

However in case of perror("Error! Opening File."); if the file program.txt does not exist, something similar to this may be expected as program output

The following error occurred: No such file or directory

The difference is obvious from above explanations.

Regarding your program, I am making an assumption that either your path to the file is wrong or there is some problem with your compiler.
Try to open your file in w+ mode also to ensure that the file exist.

Upvotes: 1

sjsam
sjsam

Reputation: 21965

As suggested in the comment, try replacing printf with perror

if ((fptr = fopen("program.txt", "r")) == NULL)
{
    perror("Error");
    // Program exits if file pointer returns NULL.
    exit(1); // Exiting with a non-zero status.
}

perror prototype is

void perror(const char *str)

where str is the C string containing a custom message to be printed before the error message itself.

However some causes of the of the file not being read are

  • File is not present in the current working directory. If this is the case, rectifying the path should fix the issue.
  • The program might not have the permissions to read from the file usually because of a setting related to discretionary access control. Perhaps do a chmod with file?

Upvotes: 1

EvilTeach
EvilTeach

Reputation: 28837

To diagnose, use the system command to issue a ls or dir depending on your platform. That will tell you where you are running from. Odds are it is a different location than the files you are trying to open.

Upvotes: 1

Related Questions