Text Files: Opening
Main Function Return Values
This program is the first program in this series that returns an error value from the main program. If the fopen
command fails, f will contain a NULL value (a zero). We test for that error with the if statement. The if statement looks
at the True/False value of the variable f. Remember that in C, 0 is False and anything else is true. So if there were an
error opening the file, f would contain zero, which is False. The ! is the NOT operator. It inverts a Boolean value. So the if statement could have been written like this:
That is equivalent. However, if (!f) is more common.
If there is a file error, we return a 1 from the main function. In UNIX, you can actually test for this value on the command line.
See the shell documentation for details.
|
You use fopen to open a file. It opens a file for a specified mode (the three most common are r, w, and a, for read, write, and append). It then returns a file pointer that you use to access the file. For example, suppose you want to open a file and write the numbers 1 to 10 in it. You could use the following code:
#include <stdio.h>
#define MAX 10
int main()
{
FILE *f;
int x;
f=fopen("out","w");
if (!f)
return 1;
for(x=1; x<=MAX; x++)
fprintf(f,"%d\n",x);
fclose(f);
return 0;
}
The fopen statement here opens a file named out with the w mode. This is a destructive write mode, which means that if out does not exist it is created, but if it does exist it is destroyed and a new file is created in its place. The fopen command returns a pointer to the file, which is stored in the variable f. This variable is used to refer to the file. If the file cannot be opened for some reason, f will contain NULL.
The fprintf statement should look very familiar: It is just like printf but uses the file pointer as its first parameter. The fclose statement closes the file when you are done.

