Tableau

Fermé
achrafcabiste Messages postés 10 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 28 mars 2008 - 6 mars 2008 à 22:29
 rayyad fahd - 26 mars 2008 à 16:16
Bonjour, comment fait un mettre a jour d'un tableau en language c,
explication:
mois j'ai tn tableau intilisé par exemle t[5]={2,3,4,5,7} et je fait affecte un valeur dans ce tab par exp t[0]=n+2
avec n lit au clavier quand je fait l'execution je saisie par exp n=5, donc t[o] devient 7 et je quite l'execution .
et j'exute autrefois , il faut que t[0] prend la valeur 7 et non 2 pour faire des opération , c'est ça la mettre a jour.
aide mois svp et merci .

5 réponses

Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
6 mars 2008 à 23:20
Bonjour,

Il faut conserver le tableau dans une mémoire persistante comme un fichier, une base de données ou la base de registre. (Qui au final est un fichier aussi mais bon...) Sinon le tableau est simplement oublié à la fin programme et réinitialisé lors du lancement suivant.

Les fonctions intéressantes sont fopen, fwrite, fprintf et fclose. Pour relire le tableau au coup d'après c'est fread ou fscanf. Toutes ces fonctions utilises une variable de type FILE *, initialisée par fopen.

typiquement:

int t[5] = { 1, 2, 3, 4, 5 };
FILE *monFichier = NULL;

monFichier = fopen( "monTableau.truc", "wb" );
// w pour write et b pour binaire (=> fichier de données)
// On pourrait faire un fichier texte aussi

if ( monFichier != NULL)
{
// code pour un fichier de données
   fwrite( t, sizeof(int), 5 );   // vérifier l'ordre des paramètres dans la doc, moi je vais me coucher ^^

// Code pour un fichier texte
/*
   for ( unsigned int i = 0 ; i != 5 ; i++ )
      fprintf( monFichier, "%d", t[i] );
*/

   fclose( monFichier );

}
else
{
   printf( "impossible d'ouvrir le fichier" );
}


M.
0
achrafcabiste Messages postés 10 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 28 mars 2008
7 mars 2008 à 22:33
salut, voila mon programme qui est n'est pas terminé ou je fait mettre le programme de fichier, parce que mois je n'ai aucune idé sur les fichiers
(tableau de type struct):

#include<stdio.h>
#include<conio.h>

struct client
{ int num_compte ;
char nom[20] ;
char prenom[20] ;
int code ;
int solde ;
} ;




main()
{

struct client tab[5]={{054547,"khalifa","achraf",105,60},{014747,"bjaoui","bachra",06574112,65000},
{105472,"crous","tom",07574254,85000},{257420,"scofield","micheal",45721435,97500},
{245796,"beckam","david",05743257,460000}};
int s,solde;
int mp;
int i,j;
int c,r;
int choix=-1;

printf("saisie votre mot de passe\n");
scanf("%d",&mp);
for (i=0;i<5;i++)
{
if (mp==tab[i].code)

j=i;
}



if (mp==tab[j].code)

{
while(choix!=0)
{
printf("\t 1_retrait\n");
printf("\t 2_solde du compte\n");
printf("\t 3_derniers mouvements\n");
printf("\t 4_virement d'une certaine somme d'argent d'un compte à un autre\n");
printf("\t 0_quitter\n");

printf("votre choix:\n");
scanf("%d",&choix);

switch(choix)
{
case 1: {

printf("entrer la somme d'argent que tu veulent prendre (10 DT au minimum): ");
scanf("%d",&s);


if (s <= tab[j].solde )

{ if ((s < 10) || ((s % 10) != 0))
printf("imposible");
else if (s==10) printf("1 billet de 10 DT");
else if (s==20) printf("1 billet de 20 DT");
else if (s==30) printf("1 billet de 30 DT");
else
{ c=(s/30);
r=(s-(c*30));

printf("%d de billet de 30 DT et 1 billet de %d DT",c,r);
}
}

else printf("l'argent que tu veulent prendre est supérieur à votre solde");

break;
}

}
case 2: {
tab[j].solde=(tab[j].solde-s);
solde=tab[j].solde;
printf("voila votre solde: %d",solde);
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
6 mars 2008 à 23:23
Bonsoir,

Lorsque "tu quittes une exécution" tu perds toutes les données présentes dans les variables (et les tableaux) présents en mémoire centrale. Lorsque tu actives une nouvelle exécution seules les variables (et les tableaux) initialisées auront chacune une valeur cohérente, celle qui leur est affectée.
entre les deux événements (fin d'une exécution début d'une autre), si l'on veut conserver tout ou partie de ces données, il faut les stocker en FIN d'exécution de ton programme AILLEURS que dans la mèmoire centrale (elle n'est utile pour stocker ds valeurs que durant l'exécution d'un process).
Et bien evidemment ton programme doit, en DEBUT d'exécutiion récupérer ces données et les affecter aux variables correspondantes. Cela s'appelle : la PRESERVATION/RESTAURATION du contexte programme.
AILLEURS c'est sur une unité périphérique de stockage, entre autres le disque dur. Mais pour que ton programme puisse identifier ces données sur le disque dur il doit les regrouper sous une même entité c'est-à-dire un fichier ayant un nom unique.
Donc pour régler le problème que tu poses tu dois créer un fichier qui contiendra les données de ton tableau, elles seront écrites dans ce fichier en fin d'exécution, et lues en début d'exécution pour renseigner les éléments de ce tableau avec les valeurs qui étaient celles de la dernière exécution. (ATTENTION: A la 1ere exécution il n'y aura pas de fichier, c'est le traditionnel cas 1ère fois)
0
kelfons Messages postés 11 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 4 juillet 2009
7 mars 2008 à 15:55
bonjour,
merci pour ces eclaircissements mais j'avoue que des zones d'ombres persistent toujours.
merci de rélire mes questions et centrer tes eplicartions sur ces mots clé :<<lecture et ecriture dans un fichier>>
une fois le fichier crée par un pogramme ou se situe ce fichier(verrait-on son icone quelquepart???)le fichier stockera ces données dans une espèce de bloc note(comme sous windows),qu'en est-il du cas sous l'unix???j(je veux dire par cela si on clique sur le fichier crée ,verrait-on ton contenu dans un editeur comme emacs, gedit ...?)
merci d'avance pour tes explcations
0
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
7 mars 2008 à 18:14
Hmmm, disons qu'un fichier c'est un fichier. Il est stocké sur le disque comme tout autre fichier.
Son emplacement dépend du paramètre du fopen comme dans mon exemple ci dessus. Il peut-être du type "c:\\OuJeveux\\monFichier.truc", "/home/moi/monFichier.truc" ou "encoreAilleurs/monFichier.truc". Dans le dernier cas le chemin relatif est repris à partir du répertoire d'exécution du programme.

Pour ce qui est d'éditer le fichier, il y a deux types de fichiers: texte et binaire (ou de données) Dans un fichier texte le nombre 1 sera écrit 0x49, soit le code ascii de 1. C'est donc un vrai fichier texte de chez fichier-texte & co. Moi y a pas longtemps de générait des fichiers wav qui peuvent donc être lus par n'importe quel player audio pour peu qu'on ait respecté le format d'un wav. Dans un fichier binaire 1 sera écrit 01 00 00 00 soit la représentation d'un int.
On choisit généralement le format texte lorsque l'on a besoin de pouvoir éditer le fichier texte avec un éditeur. Sinon écrire un million prend 7 caractères au lieu des 4 octects d'un int, on perd vite de la place pour rien donc...

Dans le cas d'une ouverture d'un fichier en écriture, le répertoire doit exister, le fichier peut-être créé, écrasé, ou complété selon le paramètre donné.

Dans le cas d'une ouverture d'un fichier en lecture, le répertoire doit exister, le fichier doit exister.
Pour les autres fonctions et bien il n'y a vraiment que celle données dans mon précédent post.

M.
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
7 mars 2008 à 18:48
Bonjour,

Quest-ce qu'un fichier ?
-un fichier, au sens général, se présente comme une collection d'articles ou de rubriques se rapportant à un même sujet. Il est identifiable grâce au thème qui a présidé à sa conception puis à sa création (Exemples: fichier du personnel, carnet de commandes dans une entreprise, fichier Word, Excel, ... en bureautique, ....) A ce titre un programmme est lui aussi un fichier dont le thème peut s'illustrer par le langage utilisé + la fonction réalisée par ce programmme (Exemple: programme écrit en C réalisant la création d'un fichier, ......pour coller notre sujet).
Il est nécessaire à ce niveau de distinguer deux éléments pour un même fichier:
-Ce que l'on peut appeler "l'enveloppe" c'est ce qui sur le plan techique, cette fois, l'identifie; son nom, ses caractéristiques fichiere de type binaire, texte, .............
-Son contenu ce sont les données qu'il contient (ou qu'il contiendra)
Lorsque l'on ouvre un nouveau document sous un éditeur de texte Word par exemple on peut résumer et dire que l "on crée l'enveloppe", si on le ferme après avoir saisi ne sesrait-ce qu'un caractère on crée également son contenu. Libre à toi, si tu le souhaites de créer un raccourci/icône sur ce nouveau fichier.
Quelque soit le moyen utilisé pour le créer, ce fichier doit exister quelque part. C'est la notion de chemin d'accès qui mène au dossier dans lequel le fichier à été inscrit au moment de sa création :
( C:\.........\.........\nom du dossier\nom_du_fichier).

Ces notions étant rappelées, il te faut considérer qu'un programme, à l' aide d'instructions spécifiques aux traitements des fichiers, (instructions rappelées plus haut par Mahmah) est à même d'effectuer les mêmes "actions" que celles réaisées manuellement sous Word pour créer un fichier dans mon illustration précédente.
OPEN nom_du_fichier : le programme ouvre le fichier et le rend indisponible pour d'autres utilisations.
WRITE nom_du_fichier : il écrit dans le fichier (dans ton exemple il écrira en fin de traitement les nouvelles valeurs contenues dasn ton tableau soit: 7,3,4,5,7)
READ nom_du_fichier : il lit les rubriques du fichier (dans ton exemple il lira en début de traitement les valeurs préservées à l'issue du précédent traitement soit: 7,3,4,5,7)
CLOSE nom_du_fichier : il ferme le fichier et le rend disponible pour d'autres utilisations.

Le fichier ainsi créé reste disponible, il peut être visualisé avec un éditeur (de texte ou spécialisé, suivant que le fichier est en mode caractères, binaire, ect.....)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rayyad fahd
26 mars 2008 à 16:16
bounjour,
je veux faire un programme en language C qui fait un apprentissage par un quiz en utilisant les fichiers .
svp g besoin de votre aide.
0