Langage c, gestion de données dans un fichier

Fermé
Tibus - 10 nov. 2010 à 22:31
 Tibus - 14 nov. 2010 à 12:15
Bonjour a tous,
Je fais un petit logiciel en langage c qui gere une petite "base de donnée". Le probleme est que j'ai fais une structure "mastruct" et j'ai créé des variables truc machin[100];
Sous la forme d'un tableau de variables. Mon probleme est que quand je crée des variables pour machin[0].nom= 10; ca ecrit en binaire (fwrite) dans un fichier je peux la relire... Je veux ajouter machin[1].nom=12; mais la ca ne fonctionne pas.
Ma question est donc comment stocker des données dans un fichier en ajoutant petit a petit des valeurs ou en modifiant celles-ci ---> machin[0].nom = 12; mais il réécrit par dessus mes valaurs. Je ne sais pas comment faire....
Merci d'avance pour votre aide.

A bientôt

Tibus

A voir également:

5 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
11 nov. 2010 à 00:08
Nativement, le langage C n'est pas fait pour faire des opérations complexes sur les fichiers; toutefois, Dieu merci, il possède toutes les fonctions permettant d'y arriver. La lecture et l'écriture peuvent se faire n'importe où dans le fichier, mais c'est à toi de gérer ce 'où'.
La solution à envisager dépend de ton objectif:
- s'il s'agit d'un simple exercice, le plus simple est de travailler avec des structures de longueur constante et de calculer les déplacements à l'aide de 'sizeof',
- s'il s'agit d'une application dans laquelle on désire gérer, sans difficulté, une petite base de données, 'ma' solution est: sqlite,
- s'il s'agit d'une application avec une grosse base de données, il faut se diriger vers une solution client-serveur.
C'est schématique, et cela mérite réflexion.
Alors -> bonne réflexion.
2
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
11 nov. 2010 à 20:37
gerer des stocks de marchandises sur plusieurs comptes (plusieurs utilisateurs)
Plusieurs utilisateurs, c'est-à-dire que sur plusieurs personnes sur des ordinateurs différents utiliseront ce logiciel et accèderont à la même base de données ? Si oui, alors il n'y a, pour moi, qu'une seule solution: client-serveur !
sqlite n'est pas vraiment fait pour du multi-utilisateurs du fait qu'il verrouille systématiquement tout le fichier lors d'un accès or toute la base tient dans un seul fichier (évidemment ça dépend aussi de la fréquence des accès!). D'autre part il faut savoir que 'sqlite' supporte mal les accès réseau et que sa demande mémoire devient importante avec de gros fichiers.
Par contre, il est certain que son 'installation est beaucoup plus aisée que celle de MySql.
A toi de choisir.
2
Bonsoir,
Merci à toi de continuer de me "guider" je vais essayer de faire un client serveur en ajoutant la library Mysql a codeblocks (et quelques tutos) sinon j'improviserai... j'avais deja commencé a me faire une table d'indexation pour associer des ID et des Variétés et faire un fichier par type de donnée mais pour (exemple) un stock de blé il y a 50 variété (50 fichiers de données) sachant qu'il reste orge ... Donc je vais deja tanter avec Mysql :)
Bon je te remerci et je retiens au courrant si cela fonctionne.
C'est peut etre indiscret mais tu es developpeur en C ?


A bientôt et merci encore

Tibus
1
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
12 nov. 2010 à 18:41
Oui, c'est indiscret mais il est certain que je développe au moins en C.
Je ne veux pas trop influer sur ton choix, mais rien n'empêche de commencer par 'sqlite' puis plus tard de passer à 'MySQL'; pour cela il suffit d'isoler les fonctions de connexion, de déconnexion, de transferts et de traitements d'erreurs dans des routines bien séparées du reste du programme. En effet, à moins de pousser 'sqlite' dans ses derniers retranchements, il est compatible, à quelques exceptions près, avec SQL92. Je dis cela simplement parce que 'sqlite' est facile à installer (pas de droits à gérer) et à travailler en ligne de commande
Bonne soirée.
1
Ok je vais essayer!
Je te remercie encore et desolé de la question indiscrette.
Je cherche a faire une ecole de programmation dans la suite de mes etudes en langage c pour developper dans l'agrotic ou le reste alors je cherche des personnes ayant faites des parcours similaires pour savoir par ou passer ou trouver des metier pour travailler qu'une saison (l'hiver )

J'essai ca tout de suite. C'est interessant sqlite si ca n'est pas trop long et fastidieu de repasser en sql (serveur - client)
Merci

Tibus
0
Bonjour a tous,
Ca a l'air de marcher mon logiciel encore merci.
Puisqu'il y a peu d'échanges entre les utilisateurs (données personelles) . SQLite reste en local donc il n'y a pas de problemes... Cependant, si je veux faire des bases de données complete avec beaucoup d'informations, je peux aisément changer le fichier de sqlite pour tout les utilisateurs sous forme de telechargement?
Bye
Tibus
0
bonjour,
Tout d'abord merci a toi loupius de ta reponse très rapide et surtout précise...
Je suis en BTS en agronomie et passionné de programmation depui 3 ans. J'ai donc appris le C tout seul (c'est long) et un peu sur le sql.... Je cherche a faire un programme complexe cappable de gerer des stocks de marchandises sur plusieurs comptes (plusieurs utilisateurs) . Je ne suis pas en ecole d'informatique je connait le fameux client-serveur mais comment cela marche t'il.? Il n'y pas de possibilité de gerer avec les fichier. txt? ma structure est utilisées 50 fois environ mais elle est complexe sur les caracteristiques, comment faire..

A bientot

Tibus
0

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

Posez votre question
RE Bonjour,
J'ai recherché aujourd'hui et j'hesite entre Mysql pour le langage c (site du zero) et sqlite.
Lequel convient le mieux selon vous?

Cordialement

Tibus
0