Comment faire pour remplacer un fichier dans C?

Je suis en train de remplacer le contenu d'un FICHIER en C. Actuellement, j'ai:

FILE* file  = fopen("filename.txt",  "r+");
fprintf(file, "%d", 1); //regardless of what's in the file, i want to clear it and put 1 in there
...
//legacy code somewhere else in the code base. can't change.
rewind(file);
fprintf(file, "%d", 2);
fflush(file);

Toutefois, cela ne fonctionnera pas correctement. Le résultat sera:

1, 21

Chaque numéro sera écrit au début de la 1. Par exemple:

1, 21, 31, 41, ...

Je voudrais savoir si il existe un moyen de toujours remplacer ce qui est dans le fichier suivant est obtenu:

1, 2, 3, 4, ...

Toute aide serait appréciée.

Merci.

EDIT:

J'ai changé le code pour:

FILE* file  = fopen("filename.txt",  "w+");

Le problème persiste encore.

Il suffit de l'ouvrir, "w+"

OriginalL'auteur czchlong | 2012-02-06