Por que recebo mais um número de bytes relatados em um arquivo?

3

Por que recebo mais um byte? Eu não tenho uma nova linha no final. Eu testei outros arquivos com resultado semelhante. Usando o linux 3.2.

$ cat testfile.txt 
aabbcd

$ wc -c testfile.txt 
7 testfile.txt

Da mesma forma, recebo mais um número de bytes relatados se eu usar o c ++:

...
file(filename, std::ifstream::in | std::ios::binary);
file.seekg(0, std::ifstream::end);
int fsize = file.tellg();
...

O texto aabbcd consiste em 6 caracteres, em codificação ASCII, que deve ter 6 bytes. Por que recebo 7 bytes informados?

Nota: Eu pensei em ter caracteres no exemplo, mas eu me importo apenas com os bytes, não com texto, não com a entrada formatada.

    
por user1358 26.07.2013 / 09:38

1 resposta

2

vi e muitos outros editores adicionam um avanço de linha extra ao final do arquivo, mesmo que você não adicione um manualmente . Por exemplo, escrever aabbcd no vi, não pressionar voltar e salvar, fornece um arquivo que od -x despeja como

0000000      6161    6262    6463    000a
0000007

... que é (um pouco de despejo endian de) aabbcd + feed de linha.

ls -l também mostrará o arquivo como 7 bytes;

$ ls -l testfile.txt 
-rw-r--r--  1 me  staff  7 Jul 26 09:52 testfile.txt

Provavelmente, esse também é o caso do seu arquivo.

    
por 26.07.2013 / 09:55

Tags