<p>Very simply put, I have the following code snippet:</p>

<pre><code>FILE* test = fopen("C:\\core.u", "w");
printf("Filepointer at: %d\n", ftell(test));
fwrite(data, size, 1, test);
printf("Written: %d bytes.\n", size);
fseek(test, 0, SEEK_END);
printf("Filepointer is now at %d.\n", ftell(test));
fclose(test);
</code></pre>

<p>and it outputs:</p>

<pre><code>Filepointer at: 0
Written: 73105 bytes.
Filepointer is now at 74160.
</code></pre>

<p>Why is that? Why does the number of bytes written not match the file pointer?</p>

Since you're opening the file in text mode, it will convert end-of-line markers, such as LF, into CR/LF.
This is likely if you're running on Windows (and you probably are, given that your file name starts with
```
"c:\"
```
).
If you open the file in
```
"wb"
```
mode, I suspect you'll find the numbers are identical:
```
```
FILE* test = fopen("C:\\core.u", "wb");
```
```
The C99 standard has this to say in
```
7.19.5.3 The fopen function
```
:
The argument mode points to a string. If the string is one of the following, the file is
  open in the indicated mode. Otherwise, the behaviour is undefined.
```
r
```
open text file for reading
```
w
```
truncate to zero length or create text file for writing
```
a
```
append; open or create text file for writing at end-of-file
```
rb
```
open binary file for reading
```
wb
```
truncate to zero length or create binary file for writing
```
ab
```
append; open or create binary file for writing at end-of-file
```
r+
```
open text file for update (reading and writing)
```
w+
```
truncate to zero length or create text file for update
```
a+
```
append; open or create text file for update, writing at end-of-file
```
r+b
```
or
```
rb+
```
open binary file for update (reading and writing)
```
w+b
```
or
```
wb+
```
truncate to zero length or create binary file for update
```
a+b
```
or
```
ab+
```
append; open or create binary file for update, writing at end-of-file
You can see they distinguish between
```
w
```
and
```
wb
```
. I don't believe an implementation is
required
to treat the two differently but it's usually safer to use binary mode for binary data.