fopen

Opens a file using the C runtime library used by the IMSL C Stat Library.

Synopsis

#include <imsls.h>

#include <stdio.h>

FILE *imsls_fopen (char *filename, char *mode)

Required Arguments

char *filename (Input)
The name of the file to be opened.

char *mode (Input)
The type of access to be permitted to the file. This string is passed to the C runtime function fopen, which determines the valid mode values.

Return Value

A pointer to the file structure, FILE, defined in stdio.h. To close the file, use imsls_fclose.

Description

The function imsls_fopen opens a file using the C runtime library used by the IMSL C Stat Library. It is a wrapper around the standard C runtime function fopen.

Function imsls_fopen can always be used to open a file which will be used by the IMSL C Stat Library, but is required if an application has linked to multiple copies of the C runtime library, with each copy having its own set of file instructions. In this situation, using the C runtime function fopen can result in a file being opened with one copy of the C runtime library and reading or writing to it with a different copy, which may cause abnormal behavior or termination. Using imsls_fopen ensures that the same C runtime library is used for both the open operation and reading and writing within an IMSL C Stat Library function to which the file pointer has been passed as an input argument.

 

Note: The function imsls_fopen should only be used to open a file whose file pointer will be input to an IMSL C Stat Library function. Use imsls_fclose to close files opened with imsls_fopen.

 

Note: This function is not prototyped in imsls.h. This is to avoid including stdio.h within imsls.h. An extern declaration should be explicitly used to assure compatibility with linkers.

Example

This example writes a matrix to the file matrix.txt. The function imsls_fopen is used to open a file. This function returns a file pointer, which is passed to imsls_output_file. The matrix is written by imsls_f_write_matrix, which uses the file pointer from imsls_output_file. The function imsls_fclose is then used to close the file.

 

#include <imsls.h>

#include <stdio.h>

extern FILE* imsls_fopen(char* filename, char* mode);

extern void imsls_fclose(FILE* file);

 

int main()

{

FILE *file;

float a[] = {

1.1, 2.4, 3.6,

4.3, 5.1, 6.7,

7.2, 8.9, 9.3

};

 

file = imsls_fopen("matrix.txt", "w");

 

imsls_output_file(IMSLS_SET_OUTPUT_FILE, file,

0);

imsls_f_write_matrix("Matrix written matrix.txt",

3, 3, a, 0);

 

imsls_fclose(file);

}

Output

 

The content below is stored in the matrix.txt file.

Matrix written to matrix.txt

1 2 3

1 1.1 2.4 3.6

2 4.3 5.1 6.7

3 7.2 8.9 9.3