开发者

C - Saving a Small File As a String

Hey guys...In C, I wish to read a file in my current working directory (nothing fancy), into a string. Later, I'd like to print that string o开发者_JS百科ut so I can do some work on it. I'm more used to Java, so I'm getting my chops on C and would love an explanation on how to do this! Thanks fellas...


Here's a C program that will read a file and print it as a string. The filename is passed as an argument to the program. Error checking would be a good thing to add.

int main(int argc, char *argv[])
{
  FILE    *f;
  char    *buffer;
  size_t  filesize;

  f = fopen(argv[1], "r");

  // quick & dirty filesize calculation
  fseek(f, 0, SEEK_END);
  filesize = ftell(f);      
  fseek(f, 0, SEEK_SET);

  // read file into a buffer
  buffer = malloc(filesize);
  fread(buffer, filesize, 1, f);

  printf("%s", buffer);

  // cleanup
  free(buffer);
  return 0;
}


You will use:

FILE *f = fopen(filename, "r");

To open the file. If that returns non-null, you can use:

char buf[MAXIMUM_LINE_SIZE];    /* pick something for MAXIMUM_LINE_SIZE... */
char *p;

while ((p=fgets(buf, sizeof(buf), f)))
{
   /* Do something with the line pointed to by p */
}

To do something more sophisticated (not bounded by an arbitrary size, or spanning multiple lines) you'll want to learn about dynamic memory allocation: the functions malloc(), realloc(), free()...

Some links to help you:

  • manpages for file I/O: fopen, fgets, fclose

  • for memory allocation: malloc

Also, just to throw it out there: If you are interested in writing C++ instead of C, that also has its own file I/O and string stuff that you may find helpful, and you won't have to do all the memory allocations yourself. But even then, it's probably good to understand the C way also.


You might start with fopen and fread.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜