replace_line(3) general purpose functions for performing a binary search

Other Alias

bin_search, copyfile, insert_line


char *bin_search(char *key, FILE *fp);

void copyfile(FILE *fromfp, FILE *tofp);

char *replace_line(char *new_line, char *key, FILE *fp);

char *insert_line(char *new_line, char *key, FILE *fp);


The WordNet library contains several general purpose functions for performing a binary search and modifying sorted files.

bin_search() is the primary binary search algorithm to search for key as the first item on a line in the file pointed to by fp. The delimiter between the key and the rest of the fields on the line, if any, must be a space. A pointer to a static variable containing the entire line is returned. NULL is returned if a match is not found.

The remaining functions are not used by WordNet, and are only briefly described.

copyfile() copies the contents of one file to another.

replace_line() replaces a line in a file having searchkey key with the contents of new_line. It returns the original line or NULL in case of error.

insert_line() finds the proper place to insert the contents of new_line, having searchkey key in the sorted file pointed to by fp. It returns NULL if a line with this searchkey is already in the file.


The maximum length of key is 1024.

The maximum line length in a file is 25K.

If there are no additional fields after the search key, the key must be followed by at least one space before the newline character.


binsearch() returns a pointer to a static character buffer. The returned string should be copied by the caller if the results need to be saved, as a subsequent call will replace the contents of the static buffer.