I don't think fopen() handles ~ expansion:
Code:
itsme@itsme:~/C$ cat homediropen.c
#include <stdio.h>
int main(void)
{
FILE *fp;
if(!(fp = fopen("~/garbage.txt", "r")))
puts("Couldn't open file");
else
{
puts("File opened successfully");
fclose(fp);
}
return 0;
}
Code:
itsme@itsme:~/C$ ls ~/garbage.txt
/home/itsme/garbage.txt
itsme@itsme:~/C$ ./homediropen
Couldn't open file
itsme@itsme:~/C$
This does seem to work though:
Code:
itsme@itsme:~/C$ cat homediropen.c
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
char *homedir;
char filename[BUFSIZ];
if(!(homedir = getenv("HOME")))
{
puts("Environment variable HOME not available");
return 1;
}
sprintf(filename, "%s/garbage.txt", homedir);
if(!(fp = fopen(filename, "r")))
puts("Couldn't open file");
else
{
puts("File opened successfully");
fclose(fp);
}
return 0;
}
Code:
itsme@itsme:~/C$ ./homediropen
File opened successfully
itsme@itsme:~/C$