Question

I want to read a list of keywords from a (text) file and then add those in a CString array in C. The trouble is that, I am reading the file line by line, and the file contains one word in every line. I can successfully populate the array, but when I try to look up these keywords in another string, it returns false because I am guessing the keyword has \n at the end.

Another way I could read the file could be, to make the text file a comma separated file, and read one line and tokenize it. But then, I won't know how to read a line whose size can be VERY large, as the list of keyword is ever expanding.

Saad Rehman

Was it helpful?

Solution

If your problem is that a string may have a rogue newline at the end, you can use:

size_t len = strlen (mystring);
if (len > 0)
    if (mystring[len-1] == '\n')
        mystring[--len] = '\0';

Do this to mystring after you've read it in but before you use it.

It simply checks if the last character is a newline and, if so, replaces it with a string terminator.

The first check is to ensure you don't try this on an empty string where mystring[-1] would invoke the dreaded undefined behaviour.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top