1
resposta

Posição exata de SEEK_END

Quando foi feito

fseek (f, 0, SEEK_SET);

o programa sobrescreveu o primeiro caractere, pois, segundo o professor, SEEK_SET seleciona o primeiro byte do arquivo como início. Mas, quando foi feito

fseek (f, 0, SEEK_END);

o programa não sobrescreveu o último caractere, ele o pulou e a partir daí começou a escrever. Por que? O programa não deveria ter apagado o último caractere da última palavra e a partir daí ter escrito

"\n%s"

?

1 resposta

Provavelmente, isso acontece porque SEEK_SET aponta para a primeira posição do arquivo. Entendendo um arquivo como um array de tamanho n, SEEK_SET seria a posição 0. Já SEEK_END aponta para o fim do arquivo. Usando a mesma analogia, ele aponta para a posição n, mas as posições do vetor vão de 0 até n-1.

Aqui tem a documentação, para mais informações.