Pb pour écrire dans un fichier

mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 - 17 janv. 2008 à 17:44
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 - 18 janv. 2008 à 17:21
Bonjour tout l'monde..
Moi je débute, j'ai un projet assez simple, qui me semblait en tout k jusqu'a maintnt..

je veux faire un programme qui change l'icone de mon disque dur tout les jours (j'ai des smileys très sympa..)
donc j'ai fait un fichier Autorun.inf que je place sur la racine du C: avec dedans:
[Autorun]
Icon=7.ico
Title=disque

Mon programme (qui est placé dans le menu démarrage) doit simplement lire la 2ème ligne du fichier, le 6eme caractere (ici 7) faire + 1 puis réécrire le fichier avec Icon=8.ico (si le numéro est > 9 alors revient à 0..)

Comme je commence, j'ai simplifié et je n'écris qu'un seul caractère dans mon fichier (avec fprintf) mais je dois faire une erreur au moment ou je choisi mon type de variable car ca ne marche pas!
Disons que ca marche j'arrive a écrire dans mon fichier, j'arrive à additionner +1 à ma variable, mais si je mets une condition pour avoir si le chiffre est >9 pour le remettre à 0 ca plante!

Voici mon code, si qqun voit l'erreur

//ouverture du fichier Autorun.inf 
FILE* fichier = NULL;
int caractereActuel = 0;   //(variable de lecture)
fichier = fopen("Autorun.inf ", "r+");


//vérification si l'ouverture du fichier a réussi ou pas..
    if (fichier != NULL)
    {
        // On peut lire et écrire dans le fichier
        printf("Acces au fichier Autorun.inf  OK\n\n");
       
        //lecture du fichier
        caractereActuel = fgetc(fichier); // On lit le caractère
        printf("\n caractere: %c \n", caractereActuel); // On l'affiche
       
        //on ajoute +1 au caractere
        caractereActuel=caractereActuel+1;
        printf("\n caractere: %c \n", caractereActuel); // On l'affiche
       
        fclose(fichier); // On ferme le fichier qui a été ouvert


    }
    else
    {
        // le fichier n'existe pas ou est utilisé
        printf("Impossible d'ouvrir le fichier Autorun.inf \n\n");
    }
        
//vérifie si la variable fait + que 9 si oui on la remet à 0
if (caractereActuel > 9)
{
printf("+ que 9 on la remet a 0\n\n");
caractereActuel=0;
}
else
{
printf("- que 9 on ne fait rien\n\n");
}

//on réouvre le fichier
        fichier = fopen("Autorun.inf ", "r+");


        //on l'ecrit dans le fichier   
        fprintf(fichier, "%c", caractereActuel);
       
        fclose(fichier); // On ferme le fichier qui a été ouvert
       


system("PAUSE");


return 0;

Voila, merci d'avance :)
Je regarderais après comment on doit faire pour modifier que la 2ème ligne encore..
Bonne fin d'semaine les lulu

3 réponses

gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
18 janv. 2008 à 11:27
on ne lit pas un int mais un char
si tu veux continuer a le transformer en int verifie le code assci c'est pas 9

et de plus la deuxieme fois que tu ouvres ton fichier tu le lis en lecteur ca doit etre w+

je te conseille plus la fonction

GetPrivateProfileString
et

SetPrivateProfileString

qui te permet de modifier et de lire justement le type
[Autorun]
ico=1.bmp
....
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
18 janv. 2008 à 15:33
Salut,

//vérifie si la variable fait + que 9 si oui on la remet à 0
if (caractereActuel > 9) // mets plutot  if (caractereActuel >(int)'9')
{
printf("+ que 9 on la remet a 0\n\n");
caractereActuel=0; // rectifies ici aussi caractereActuel = (int)'0';
}
else
{
printf("- que 9 on ne fait rien\n\n");
}

je suis heureux de faire partie d'une grande famille ...!
0
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
18 janv. 2008 à 17:21
ReBonjour,
merci pour vos réponses :)

alors j'ai refait mon code, en utilisant plutôt la fonction GetPrivateProfileString
mais j'ai tjs des probleme avec les variables, maintenant ca coinçe dès l'ouverture du fichier autorun.ini, à section="Autorun";

voici le code:
#include <stdio.h>
#include <stdlib.h>
#include
void writefile (char* section ,char* cle , char* valeur , char* repertoire )
{
//on ecrit ( rempaçera une valeur déjà existante si la clé existe déjà )
WritePrivateProfileString(section,cle,valeur,repertoire );
}
void openini(char * section , char * cle , char* valeur , char* repertoire)
{
//on prend ce qu'il y a dedans
GetPrivateProfileString(section,cle,"retourne ça si erreur",valeur,sizeof(valeur),repertoire);
}
void trouverepertoire (char * repertoire )
{
//on donne le repertoire avec en plus "Autorun.ini" à repertoire
GetFullPathName("Autorun.ini", 256, repertoire, NULL);
}


int main(int argc, char *argv[])
{
//contien le repertoire ou l'on mettra le .ini
char repertoire [256] ;
trouverepertoire ( repertoire ) ;
//contiendra le text
char contienttext [256] = {' '};
int choix = 0 ;
char section [256];
char cle [256];
char valeur [256];
  printf("Lancement du programme de changement d'icone de disque..\n\n");
 
  //ouverture du fichier Autorun.ini
  section="Autorun";
  cle="Icon";
  openini(section,cle, contienttext ,repertoire);  //lecture
  printf("\n la valeur est: %c \n", contienttext); //affichage
  contienttext=contienttext+1;  //on ajoute +1
      if (contienttext >(int)'9')
      {
      printf("\n la valeur est > 9 \n);
      contienttext = (int)'0';
      }
      else
      {
      printf("\n la valeur est inferieure a 9  on ne fait donc rien \n);
      }
     
  //écriture de la nouvelle valeur
  section="Autorun";
  cle="Icon";
  valeur=contienttext
  writefile (section,cle , valeur , repertoire);


printf("Programme termine.\n\n");
system("PAUSE");
return 0;
}

Merci infiniment en tout k!
0
Rejoignez-nous