KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Consider the following simple C program that read a file into a buffer and displays that buffer to the console: #include<stdio.h> main() { FILE *file; char *buffer; unsigned long fileLen; //Open file file = fopen("HelloWorld.txt", "rb"); if (!file) { fprintf(stderr, "Unable to open file %s", "HelloWorld.txt"); return; } //Get file length fseek(file, 0, SEEK_END); fileLen=ftell(file); fseek(file, 0, SEEK_SET); //Allocate memory buffer=(char *)malloc(fileLen+1); if (!buffer) { fprintf(stderr, "Memory error!"); fclose(file); return; } //Read file contents into buffer fread(buffer, fileLen, 1, file); //Send buffer contents to stdout printf("%s\n",buffer); fclose(file); } The file it will read simply contains: Hello World! The output is: Hello World!²²²²▌▌▌▌▌▌▌↔☺ It has been a while since I did anything significant in C/C++, but normally I would assume the buffer was being allocated larger than necessary, but this does not appear to be the case. fileLen ends up being 12, which is accurate. I am thinking now that I must just be displaying the buffer wrong, but I am not sure what I am doing wrong. Can anyone clue me in to what I am doing wrong?
Tags (comma-separated)
Save Edits
Cancel