A voir également:
- écrire dans un fichier texte
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir un fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
16 mars 2013 à 21:25
16 mars 2013 à 21:25
Bonjour,
Tu n'as pas de fonctions ??
Tu n'as pas de fonctions ??
Non pour le moment je souhaite juste écrire dans un fichier texte. Ensuite je tenterais de progresser en fessant un calcul avec des sémaphore,.. mais je suis à l'aise avec les séma tandis que les fichiers ces que du neuf
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
16 mars 2013 à 21:56
16 mars 2013 à 21:56
Non mais, tu ne peux pas mettre des instructions comme ça... Il faut qu'elles soient dans une fonction. Un programme doit au moins contenir un main().
Je veux juste aller me pendre... --'
merci de me faire remarquer que j'ai complétement zapper de mettre le main...
Bon j'ai enfin pu comprendre les erreurs enfin pas tous mais j'ai pas mal corriger.. Je ne sais pas comment j'ai pas vu pour mon main, c'est tellement stupide que j'y ai même pas regarder..
merci de me faire remarquer que j'ai complétement zapper de mettre le main...
Bon j'ai enfin pu comprendre les erreurs enfin pas tous mais j'ai pas mal corriger.. Je ne sais pas comment j'ai pas vu pour mon main, c'est tellement stupide que j'y ai même pas regarder..
#include <stdio.h> #include <stdlib.h> #include <sys/wait.h> #include <unistd.h> #include <sys/types.h> #include <string.h> #include <fcntl.h> #define fichiertexte "texte.txt" int main (int argc, char * argv[]){ FILE * texte; int cpt = 0; while (cpt < 3) //boucle qui créé les 3 fils { pid_t a = fork(); if (a < 0) //si le fils à planter { perror ("le fork a rate\n"); exit(EXIT_FAILURE); } if (a == 0) //si le fils a été créé { printf ("ecrire dans le fichier texte\n"); if ((texte = fopen(texte,"w"))==NULL) { perror("Write "); exit(1); fprintf(texte,""Je suis le fils de pid %d, a vaut %d, mon pere est %d \n", getpid(), a, getppid());); } exit(0); } cpt++; //on termine la boucle quand on atteint 3 fils } for(cpt=0;cpt<3;cpt++) wait(0); // on termine tout les processus exit(EXIT_SUCCESS); }
exo_fichier1.c: In function 'main': exo_fichier1.c:25: warning: passing arg 1 of 'fopen' from incompatible pointer type exo_fichier1.c:29: error: parse error before "Je" exo_fichier1.c:29: error: stray '\' in program exo_fichier1.c:29:80: missing terminating " character exo_fichier1.c:38: error: parse error at end of input
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
16 mars 2013 à 23:30
16 mars 2013 à 23:30
texte = fopen(texte,"w")
Ne veux-tu pas mettre plutôt fichiertexte ?
""Je suis
Tu as mis 2 guillemets.
fprintf(texte,""Je suis le fils de pid %d, a vaut %d, mon pere est %d \n", getpid(), a, getppid()););
Tu as );); à la fin. Le premier ferme fprintf(). Le second est donc à supprimer.
exit(EXIT_SUCCESS);
Un main() se termine par return EXIT_SUCCESS; ou return 0; Pas de exit().
Ne veux-tu pas mettre plutôt fichiertexte ?
""Je suis
Tu as mis 2 guillemets.
fprintf(texte,""Je suis le fils de pid %d, a vaut %d, mon pere est %d \n", getpid(), a, getppid()););
Tu as );); à la fin. Le premier ferme fprintf(). Le second est donc à supprimer.
exit(EXIT_SUCCESS);
Un main() se termine par return EXIT_SUCCESS; ou return 0; Pas de exit().
encore merci. Je me rend compte que je n'aurais pas du travailler quand je suis et fatigué et que j'ai bu avec des amis.. Je me rend compte que maintenant de mes erreurs..
Tu ma fais diminuer énormément mon paquet d'erreur mais pourquoi je devrais mettre fichiertexte? Je part sur un exemple d'un autre code donc en gros que je comprend même pas ce que j'écris malgré que j'ai lu la théorie.
Bon voila j'ai modifier encore qq petite chose en essayant de bien comprendre. Sa compile mais je n'ai rien qui s'écrit dans le fichier: "fichier.txt"
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
#include <fcntl.h>
#define fichiertexte "texte.txt"
FILE * fichier;
int main (int argc, char * argv[]){
FILE * texte;
int cpt = 0;
while (cpt < 3) //boucle qui créé les 3 fils
{
pid_t a = fork();
if (a < 0) //si le fils à planter
{
perror ("le fork a rate\n");
exit(EXIT_FAILURE);
}
if (a == 0) //si le fils a été créé
{
printf ("ecrire dans le fichier texte\n");
if ((fichier = fopen(fichiertexte,"w"))==NULL) {
perror("Write ");
exit(1);
fprintf(texte,"Je suis le fils de pid %d, a vaut %d, mon pere est %d \n", getpid(), a, getppid());
}
exit(0);
}
cpt++; //on termine la boucle quand on atteint 3 fils
}
for(cpt=0;cpt<3;cpt++) wait(0); // on termine tout les processus
EXIT_SUCCESS;
}
bash-2.05$ gcc exo_fichier1.c -o exo_fichier
bash-2.05$ exo_fichier
ecrire dans le fichier texte
ecrire dans le fichier texte
ecrire dans le fichier texte
Pourtant je vois que je passe dans tout les fork.. malgré cela mon fichier texte est vide
Tu ma fais diminuer énormément mon paquet d'erreur mais pourquoi je devrais mettre fichiertexte? Je part sur un exemple d'un autre code donc en gros que je comprend même pas ce que j'écris malgré que j'ai lu la théorie.
Bon voila j'ai modifier encore qq petite chose en essayant de bien comprendre. Sa compile mais je n'ai rien qui s'écrit dans le fichier: "fichier.txt"
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
#include <fcntl.h>
#define fichiertexte "texte.txt"
FILE * fichier;
int main (int argc, char * argv[]){
FILE * texte;
int cpt = 0;
while (cpt < 3) //boucle qui créé les 3 fils
{
pid_t a = fork();
if (a < 0) //si le fils à planter
{
perror ("le fork a rate\n");
exit(EXIT_FAILURE);
}
if (a == 0) //si le fils a été créé
{
printf ("ecrire dans le fichier texte\n");
if ((fichier = fopen(fichiertexte,"w"))==NULL) {
perror("Write ");
exit(1);
fprintf(texte,"Je suis le fils de pid %d, a vaut %d, mon pere est %d \n", getpid(), a, getppid());
}
exit(0);
}
cpt++; //on termine la boucle quand on atteint 3 fils
}
for(cpt=0;cpt<3;cpt++) wait(0); // on termine tout les processus
EXIT_SUCCESS;
}
bash-2.05$ gcc exo_fichier1.c -o exo_fichier
bash-2.05$ exo_fichier
ecrire dans le fichier texte
ecrire dans le fichier texte
ecrire dans le fichier texte
Pourtant je vois que je passe dans tout les fork.. malgré cela mon fichier texte est vide
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
Modifié par fiddy le 17/03/2013 à 00:41
Modifié par fiddy le 17/03/2013 à 00:41
mais pourquoi je devrais mettre fichiertexte?
Ben, dans fopen(), on met en 1ère argument le nom du fichier dans lequel on veut écrire ou lire.
Tu as mis en début de code : #define fichiertexte "texte.txt"
Donc, en mettant fichier=fopen(fichiertexte,"w"); tu tenteras d'écrire dans "texte.txt". La variable fichier te permettra d'écrire dans fichiertexte soit "texte.txt".
Je ne vois toujours pas de return EXIT_SUCCESS; dans ton code... Tu as mis simplement EXIT_SUCCESS, ça ne veut pas dire grand chose.
fprintf(texte,"Je suis le fils de pid %d, a vaut %d, mon pere est %d \n", getpid(), a, getppid());
Tu écris sur le pointeur texte qui pointe sur rien... Il faut mettre : fprintf(fichier,...) c'est fichier qui pointe sur le fichier fichiertexte.
N'oublie pas non plus, fclose(fichier); Ouvrir un fichier c'est bien le refermer c'est mieux !
Et enfin, n'utilise pas le bouton "souligné" pour poster un code. C'est désagréable à lire. Utilise comme tu faisais au début (bouton code, à droite de "souligné"). Merci d'avance pour mes yeux :-).
Ben, dans fopen(), on met en 1ère argument le nom du fichier dans lequel on veut écrire ou lire.
Tu as mis en début de code : #define fichiertexte "texte.txt"
Donc, en mettant fichier=fopen(fichiertexte,"w"); tu tenteras d'écrire dans "texte.txt". La variable fichier te permettra d'écrire dans fichiertexte soit "texte.txt".
Je ne vois toujours pas de return EXIT_SUCCESS; dans ton code... Tu as mis simplement EXIT_SUCCESS, ça ne veut pas dire grand chose.
fprintf(texte,"Je suis le fils de pid %d, a vaut %d, mon pere est %d \n", getpid(), a, getppid());
Tu écris sur le pointeur texte qui pointe sur rien... Il faut mettre : fprintf(fichier,...) c'est fichier qui pointe sur le fichier fichiertexte.
N'oublie pas non plus, fclose(fichier); Ouvrir un fichier c'est bien le refermer c'est mieux !
Et enfin, n'utilise pas le bouton "souligné" pour poster un code. C'est désagréable à lire. Utilise comme tu faisais au début (bouton code, à droite de "souligné"). Merci d'avance pour mes yeux :-).