Je travaille sur un programme qui recherche dans un fichier une chaîne spécifique qui était dans une structure lors de son écriture dans le fichier. Si je trouve une correspondance dans ce fichier, j'ai besoin d'écraser une partie de cette structure. Rechercher le fichier pour le match est super facile, mais je suis aux prises avec l'écrasement de cette structure. Ci-dessous mon code cherchant le fichier et essayant d'écraser ces données.C - Comment rechercher un fichier et en remplacer une partie
dfp = fopen(archName, "ab");
if(dfp == NULL) {
printf("An error has occurred... %s could not be opened.\n", archName);
return 0;
} /* End if */
/* Read first header file */
fread(&getHeader, sizeof(getHeader), 1, dfp);
/* Check for match */
if(strcmp(fName[0], getHeader.file_name) == 0) {
getHeader.deleted = (char)49;
fwrite(&getHeader, sizeof(getHeader), 1, dfp);
Notez que getHeader est une structure. Il y a plusieurs structures qui peuvent être stockées n'importe où dans mon fichier. J'ai besoin de rechercher chaque en-tête pour une chaîne spécifique (facile). Quand une correspondance est trouvée, cette structure doit être écrasée.
Quel type de processus serait recommandé pour accomplir une telle tâche?
J'ai effectivement essayé d'utiliser toutes les options disponibles pour fopen, mais en vain ... Quand j'utilise "r + b" comme mode et que je tente d'écraser une structure donnée, je finis par créer une nouvelle structure directement à la suite de la structure que je souhaite écraser ... Est-ce là où fseek entrerait en jeu? Dois-je replacer le pointeur au début de la structure que je souhaite remplacer? – kubiej21
Ahh ... je me suis rendu compte que j'avais une faute de frappe dans mon appel de fseek. Merci pour l'information! – kubiej21