L'insertion de données dans un fichier en c

J'ai besoin d'ajouter une chaîne de caractères avant de les 45ème d'octets dans un fichier existant. J'ai essayé d'utiliser fseek comme indiqué ci-dessous.

int main()
{
    FILE *fp;
    char str[] = "test";     

    fp = fopen(FILEPATH,"a");
    fseek(fp,-45, SEEK_END);                
    fprintf(fp,"%s",str);
    fclose(fp);     
    return(0);
}

Je m'attend à ce que ce code permettra d'ajouter "test" avant de les 45ème char d'expressions du FOLKLORE, au lieu de cela, il ajoute juste "test" pour les expressions du FOLKLORE.

S'il vous plaît aidez-moi à trouver la solution.

C'est la suite de ma question précédente
Ajout de l'élément dans un fichier avant la dernière ligne c

qui question précédente? Pourriez-vous s'il vous plaît lien?
Est fseek de retourner une erreur?
Merci alexandre et Brian. J'ai eu la solution ci-dessous.

OriginalL'auteur arun | 2010-07-16