#### 4.7.1 Wisdom Export ¶

    int fftw_export_wisdom_to_filename(const char *filename);
    void fftw_export_wisdom_to_file(FILE *output_file);
    char *fftw_export_wisdom_to_string(void);
    void fftw_export_wisdom(void (*write_char)(char c, void *), void *data);

These functions allow you to export all currently accumulated wisdom in a form from which it can be later imported and restored, even during a separate run of the program. (See Words of Wisdom—Saving Plans.) The current store of wisdom is not affected by calling any of these routines.

`fftw_export_wisdom` exports the wisdom to any output medium, as specified by the callback function `write_char`. `write_char` is a `putc`-like function that writes the character `c` to some output; its second parameter is the `data` pointer passed to `fftw_export_wisdom`. For convenience, the following three “wrapper” routines are provided:

`fftw_export_wisdom_to_filename` writes wisdom to a file named `filename` (which is created or overwritten), returning `1` on success and `0` on failure. A lower-level function, which requires you to open and close the file yourself (e.g. if you want to write wisdom to a portion of a larger file), is `fftw_export_wisdom_to_file`. This writes the wisdom to the current position in `output_file`, which should be open with write permission; upon exit, the file remains open and is positioned at the end of the wisdom data.

`fftw_export_wisdom_to_string` returns a pointer to a `NULL`-terminated string holding the wisdom data. This string is dynamically allocated, and it is the responsibility of the caller to deallocate it with `free` when it is no longer needed.

All of these routines export the wisdom in the same format, which we will not document here except to say that it is LISP-like ASCII text that is insensitive to white space.