Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/11/2007, à 09:15

JérémieR

Ecrire dans un fichier en C

Bonjour à  tous,
Je cherche à  créer un programme qui écrirait la valeur 255 dans un fichier. Ce programme doit être écrit en C.
J'ai déjà  créer un fichier en bash et la ligne de commande qui me permettait d'écrire dans ce fichier ressemblai à  ça.

echo 255 > /sys/class/leds/b1:blue/brightness

Mais voila maintenant je dois le faire en C et j'aimerai trouver des instructions plus simple que fopen, fwrite,fclose, enfin si cela existe.

Je vous remercie d'avance.

Hors ligne

#2 Le 21/11/2007, à 09:22

maskott

Re : Ecrire dans un fichier en C

ben en C tu peux utiliser "exec" (je crois, ou une fonction du même genre) qui va executer une commande bash, par contre attention tu pourras plus (je crois aussi) utiliser ton programme sous un autre environement


Backups are for wimps. Real men upload their work to an ftp server and have everybody mirror it. - Linus Torvalds
                                                                               
[RESOLU] dans les posts qui le sont, merci
(Et si vous y arrivez tout seul, indiquez aussi la solution, remerci)

Hors ligne

#3 Le 21/11/2007, à 09:24

abetsic

Re : Ecrire dans un fichier en C

Tu as la commande system :

system("echo 255 > /sys/class/leds/b1:blue/brightness");

Mais je crois qu'elle pose des problèmes de sécurité dans certain cas... Il y a d'autres commandes équivalentes... Je te laisse chercher, ça ne doit pas être trop dur à  trouver.

Hors ligne

#4 Le 21/11/2007, à 09:25

JérémieR

Re : Ecrire dans un fichier en C

Je vais essayer.

la ligne devrait ressembler plus ou moins à  :

exec echo 255 > /sys/class/leds/b1:blue/brightness

Si je ne me trompe pas.
Merci de la rapidité de la réponse

Hors ligne

#5 Le 21/11/2007, à 09:29

maskott

Re : Ecrire dans un fichier en C

je crois que abetsic a raison, c'est system
exec je sais plus ou j'ai vu ça
par contre à  la fin de l'exécution de la commande bash, ça tue le processus qui l'a lancé...donc ton prog
pour y palier il faut créer un fils qui va la lancer
if fork()==0
{
system...
}

là  aussi à  verifier, je fais de tête...
mais à  moins qu ce sois un impératif, c'est quand même mieux un petit fopen...


Backups are for wimps. Real men upload their work to an ftp server and have everybody mirror it. - Linus Torvalds
                                                                               
[RESOLU] dans les posts qui le sont, merci
(Et si vous y arrivez tout seul, indiquez aussi la solution, remerci)

Hors ligne

#6 Le 21/11/2007, à 09:59

JérémieR

Re : Ecrire dans un fichier en C

Merci maskott, j'ai un peu de mal à  utiliser les fopen, donc si quelq'un peut m'expliquer plus grossièrement que ce que je trouve sur le web se serait gentil, sinon je me deme... mais c'est pas dit que je trouve, sachant que je début en C.

Hors ligne

#7 Le 21/11/2007, à 10:16

abetsic

Re : Ecrire dans un fichier en C

Il n'y a pas grand chose à  comprendre sur fopen : à‡a ouvre un fichier de la manière définie en argument (lecture, écriture, écriture à  la fin). La commande fopen renvoie un pointeur vers fichier qui est utilisé en premier argument de la commande fprintf.

Tu peux regarder les pages de man... en général c'est bien expliqué.

Hors ligne

#8 Le 21/11/2007, à 10:19

JérémieR

Re : Ecrire dans un fichier en C

Ca ponctionne parfaitement avec system, merci de cette idée, plus qu'a régler tout ça avec fork.
Merci en tout cas.

Hors ligne

#9 Le 21/11/2007, à 10:20

JérémieR

Re : Ecrire dans un fichier en C

Ce n'est pas fopen qui me bloque, c'est fwrite et je ne comprend pas la page de man, car je dois spécifié des paramètres qui sont abstraits pour moi.
En tout cas merci de prendre le temps de me répondre.

Hors ligne

#10 Le 21/11/2007, à 10:30

maskott

Re : Ecrire dans un fichier en C

tout les fxxx ça sert à manipuler des flux, entre autres les fichiers.
après les #include tu peux déclarer les flux dont tu vas avoir besoin
(y en as qui le font dans le main(), mais moi j'aime pas,...:P)

FILE *mon_fichier;

ça ne fait que reserver de l'espace mémoire, ça créer rien (le * étant pour pointeur)

ensuite quand tu en as besoin, il faut

1- l'ouvrir/créer

mon_fichier=fopen("le_nom_que_tu_veux","les_options");

le_nom_que_tu_veux : nom sur le disque
mon_fichier : nom dans le programme

option :
"r" : read, pour lire
"w" : pour écrire
"rw" : ...
attention, "w" ça crée un fichier vide, pour ajouter du texte à un fichier existant :
"a" ou "a+" (à vérifier)

2- l'utiliser

*variable;

est un pointeur

fwrite(variable,sizeof(type_variable),nb,mon_fichier);

écrit le contenu de ta variable dans le fichier, sizeof() pour la taille, 1 pour le nombre de sizeof que ça va prendre
par exemple

fwrite("coucou",sizeof(char),6,mon_fichier);
fread(&variable,sizeof(type_variable),nb,mon_fichier);

pour lire

des lectures/écritures successives sont font en suivant, si on ne touche pas à la position de la "tête de lecture" (avec fseek())

3- fermeture

fclose(mon_fichier);

Dernière modification par maskott (Le 21/11/2007, à 10:32)


Backups are for wimps. Real men upload their work to an ftp server and have everybody mirror it. - Linus Torvalds
                                                                               
[RESOLU] dans les posts qui le sont, merci
(Et si vous y arrivez tout seul, indiquez aussi la solution, remerci)

Hors ligne

#11 Le 21/11/2007, à 10:53

JérémieR

Re : Ecrire dans un fichier en C

maskott, je te fais de gros bisoux smile.
Merci beaucoup d'avoir pris le temps de me rédiger un petit cours.

Hors ligne

#12 Le 21/11/2007, à 11:17

nicolas.sitbon

Re : Ecrire dans un fichier en C

#include <stdio.h>

int main (int argc, char *argv[])
{
   FILE *fichier = fopen ("/sys/class/leds/b1:blue/brightness", "w");
   if (fichier != NULL)
   {
      fprintf (fichier, "%d", 255);
      fclose (fichier);
   }
   else
   {
      perror("erreur d'ouverture");
   }   
   return 0;
}

Hors ligne

#13 Le 21/11/2007, à 11:25

JérémieR

Re : Ecrire dans un fichier en C

Y'en a un autre qui va avoir droit à  son bisoux.  smile Merci beaucoup les gars.

Hors ligne

#14 Le 21/11/2007, à 11:26

maskott

Re : Ecrire dans un fichier en C

+1
merci
je sais pas pourquoi j'avais "zapé" fprintf.... et j'étais résté sur un souvenir un peu plus tordu....


Backups are for wimps. Real men upload their work to an ftp server and have everybody mirror it. - Linus Torvalds
                                                                               
[RESOLU] dans les posts qui le sont, merci
(Et si vous y arrivez tout seul, indiquez aussi la solution, remerci)

Hors ligne

#15 Le 21/11/2007, à 13:03

Sciensous

Re : Ecrire dans un fichier en C

simplifions encore:

fprintf (fichier, "255");

est  équivalent à 

fprintf (fichier, "%d", 255);

puisque le fichier est de type texte par defaut lol

#16 Le 21/11/2007, à 13:06

JérémieR

Re : Ecrire dans un fichier en C

Nikel , vu que je suis limité en taille, c'est toujours bon à prendre. Merci

Hors ligne

#17 Le 21/11/2007, à 13:10

nicolas.sitbon

Re : Ecrire dans un fichier en C

Sciensous a écrit :

simplifions encore:

fprintf (fichier, "255");

est  équivalent à 

fprintf (fichier, "%d", 255);

puisque le fichier est de type texte par defaut lol

peut mieux faire big_smile

fputs ("255", fichier);

Hors ligne

#18 Le 21/11/2007, à 13:37

JérémieR

Re : Ecrire dans un fichier en C

Si ça continue, y'en a un qui va réussir à  faire tenir tout sur une seule ligne. big_smile
Et dire que moi ce matin je cherchai la lune, tsss on a tant de chose à  apprendre. big_smile

Dernière modification par JérémieR (Le 21/11/2007, à 13:38)

Hors ligne

#19 Le 21/11/2007, à 13:46

abetsic

Re : Ecrire dans un fichier en C

Euh... vous réalisez que au niveau du compilateur les différentes écritures seront simplifiées et donneront certainement toutes la même chose.

De manière général il n'est pas nécessaire de vouloir réduire le nombre de lignes de code, d'autant plus que ce n'est pas parce que il y a moins de lignes de code que le binaire sera plus petit, parfois c'est même le contraire qui se produit.

Le plus important c'est de garder un code lisible et ne pas vouloir supprimer trois lignes de code si c'est pour que personne ne puisse comprendre la simplification...

Hors ligne