Tableau, entrée-sortie, modifications

Fermé
Lune2mil - 17 mars 2014 à 09:53
Crazy Legs Messages postés 635 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 27 septembre 2016 - 18 mars 2014 à 10:34
Bonjour,

Je suis actuellement sur du code qui me pose (un peu) de problèmes. Mon but est assez simple :
En entrée, j'ai un fichier texte rempli de valeurs entières séparées par des tabulations, et parfois par des Entrées.
En sortie, je voudrais un autre fichier texte, avec les valeurs du fichier entrée sur laquelle on aurait réalisée une petite opération : sortie = a * entrée + b (a et b sont des constantes)

J'ai quelques petits soucis de conversion. J'ai essayé de programmé avec deux techniques, mais aucune n'est satisfaisante :
1- La deuxième me recopie et modifie partiellement le fichier, c'est à dire que j'ai seulement la première valeur de chaque ligne (juste après un Entrée) qui est recopié dans le nouveau fichier et elle est bien modifiée.
2- La première me recopie mon fichier entièrement, mais impossible de toucher aux valeurs (problèmes en les char et les int)

Pouvez-vous m'éclairer un peu ? cela ne semble pas très compliqué, mais je commence à perdre espoir...



Solution 1 :
// Ouverture des deux fichiers
entree = fopen("RI.txt", "r");
sortie = fopen("RI_ok","w");


// Tests sur l'ouverture des deux fichiers
if (entree != NULL && sortie != NULL)
{

while (fgets(chaine, TAILLE_MAX, entree) != NULL)
{

fscanf(entree, "%f", &temp);
temp = temp * rescale_slope + rescale_intercept;
fprintf(sortie, "%f\t", temp);


}

fclose(entree);
fclose(sortie);
}

else
{
printf("Impossible d'ouvrir un des deux fichiers\n");
}


Solution 2 :
if (entree != NULL && sortie != NULL)
{

while (fgets(chaine, TAILLE_MAX, entree) != NULL)
{

longueur_chaine = strlen(chaine);
printf("La longueur de la chaine est : %d\n",longueur_chaine);
for (i=0 ; i <= longueur_chaine ; i++)
{

if (
fscanf(entree, "%f", &temp);
chaine = chaine * rescale_slope + rescale_intercept;
fputs(chaine, sortie);

} // fin du for
} // fin du while

fclose(entree);
fclose(sortie);
}

else
{
printf("Impossible d'ouvrir un des deux fichiers\n");
}


Merci d'avance

Lune2mil
A voir également:

1 réponse

Crazy Legs Messages postés 635 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 27 septembre 2016 98
Modifié par Crazy Legs le 18/03/2014 à 10:35
Salut,

Utilise la balise de code pour afficher correctement ton code.

Solution 1 :

// Ouverture des deux fichiers 
entree = fopen("RI.txt", "r"); 
sortie = fopen("RI_ok","w"); 

// Tests sur l'ouverture des deux fichiers 
if(entree != NULL && sortie != NULL) 
{
      while(fgets(chaine, TAILLE_MAX, entree) != NULL)
      { 
            fscanf(entree, "%f", &temp); 
            temp = temp * rescale_slope + rescale_intercept; 
            fprintf(sortie, "%f\t", temp); 
      } 

fclose(entree); 
fclose(sortie); 
} 
else 
{ 
      printf("Impossible d'ouvrir un des deux fichiers\n"); 
}


Solution 2 :

if (entree != NULL && sortie != NULL) 
{ 
      while(fgets(chaine, TAILLE_MAX, entree) != NULL) 
      {
            longueur_chaine = strlen(chaine); 
            printf("La longueur de la chaine est : %d\n",longueur_chaine); 

            for (i=0 ; i <= longueur_chaine ; i++) 
            { 
                  if( OUBLIE
                  fscanf(entree, "%f", &temp);
                  chaine = chaine * rescale_slope + rescale_intercept; 
                  fputs(chaine, sortie);
            }
      } 

fclose(entree); 
fclose(sortie); 
} 
else 
{ 
      printf("Impossible d'ouvrir un des deux fichiers\n"); 
}


Aime ton prochain !
0