cstringfile

How to read the content of a file to a string in C?


What is the simplest way (least error-prone, least lines of code, however you want to interpret it) to open a file in C and read its contents into a string (char*, char[], whatever)?


Solution

  • I tend to just load the entire buffer as a raw memory chunk into memory and do the parsing on my own. That way I have best control over what the standard lib does on multiple platforms.

    This is a stub I use for this. you may also want to check the error-codes for fseek, ftell and fread. (omitted for clarity).

    char * buffer = 0;
    long length;
    FILE * f = fopen (filename, "rb");
    
    if (f)
    {
      fseek (f, 0, SEEK_END);
      length = ftell (f);
      fseek (f, 0, SEEK_SET);
      buffer = malloc (length);
      if (buffer)
      {
        fread (buffer, 1, length, f);
      }
      fclose (f);
    }
    
    if (buffer)
    {
      // start to process your data / extract strings here...
    }