Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

besoin d'avis sur ce code

15 réponses
Avatar
did
Salut
j'aimerai avoir vos avis sur ce code. Je me doute qu'il est pas
terrible. Dites moi ce qu'il ne va pas. Normalement, il devrait compiler ;)
J'ai zappe les parties ne concernant pas le C standard (enfin je crois :) )

did

ps: le but de ce programme est de creer un ordonnanceur, par le biais
d'une liste circulaire...

--------------------------------

#include <stdio.h>

#define NB_PID_MAX 100
#define PID_T 6

typedef struct liste_s {
struct liste_s* suiv ;
int pid ;
} ordo_s ;

int main(void)
{
int nb_pid = 0, i=0 ;
int nb_maillon_crees = 0 ;
ordo_s* liste, *debut_liste ;
int tab_pid[NB_PID_MAX] ;
char pid_name[PID_T] ;
FILE* fic ;

if ((fic = fopen("pid.txt", "r")) == NULL) {
perror("erreur") ;
return -1 ;
}

while(1) {
while (fgets(pid_name, PID_T, fic)) {
tab_pid[i] = atoi(pid_name) ;
i++ ;
nb_pid++ ;
}

if (nb_pid == 0) {
int c = getchar() ;
}
else {
liste = (ordo_s*) malloc(sizeof* liste) ;
liste->pid = tab_pid[nb_maillon_crees] ;
liste->suiv = NULL ;
nb_maillon_crees++ ;
if (nb_maillon_crees == 1) {
debut_liste = liste ;
}
while(nb_maillon_crees < nb_pid ) {
liste->suiv = (ordo_s*) malloc(sizeof* liste) ;
liste->suiv->pid = tab_pid[nb_maillon_crees] ;
nb_maillon_crees++ ;
liste = liste->suiv ;
}
}
}

liste->suiv = debut_liste ;
i=0 ;
while (i<=nb_maillon_crees) {
printf("%d\n", debut_liste->pid) ;
debut_liste = debut_liste->suiv ;
i++;
}

return 0 ;
}

10 réponses

1 2
Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', did wrote:

#include <stdio.h>

#define NB_PID_MAX 100
#define PID_T 6

typedef struct liste_s {
struct liste_s* suiv ;
int pid ;
} ordo_s ;

int main(void)
{
int nb_pid = 0, i=0 ;
int nb_maillon_crees = 0 ;
ordo_s* liste, *debut_liste ;
int tab_pid[NB_PID_MAX] ;
char pid_name[PID_T] ;
FILE* fic ;

if ((fic = fopen("pid.txt", "r")) == NULL) {
perror("erreur") ;
return -1 ;
}

while(1) {
while (fgets(pid_name, PID_T, fic)) {
tab_pid[i] = atoi(pid_name) ;


Manque <stdlib.h> pour atoi() et surtout malloc().
strtol() ou strtoul() est préférable (les fonctions ato*() sont obsoletes).

i++ ;
nb_pid++ ;
}

if (nb_pid == 0) {
int c = getchar() ;


Le 'c' n'est pas utilisé.

(void) getchar() ;
est suffisant.

}
else {
liste = (ordo_s*) malloc(sizeof* liste) ;


Cast inutile. malloc() peut échouer. Ne pas continuer si 'liste' vaut NULL.

liste->pid = tab_pid[nb_maillon_crees] ;
liste->suiv = NULL ;
nb_maillon_crees++ ;
if (nb_maillon_crees == 1) {
debut_liste = liste ;
}
while(nb_maillon_crees < nb_pid ) {
liste->suiv = (ordo_s*) malloc(sizeof* liste) ;
liste->suiv->pid = tab_pid[nb_maillon_crees] ;
nb_maillon_crees++ ;
liste = liste->suiv ;
}
}
}


Ce code n'est pas exécutable, car la boucle n'a pas de fin.

liste->suiv = debut_liste ;
i=0 ;
while (i<=nb_maillon_crees) {
printf("%dn", debut_liste->pid) ;
debut_liste = debut_liste->suiv ;
i++;
}

return 0 ;
}


Je n'ai pas vu de mécanisme de libération...

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
did
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', did wrote:


liste->suiv = debut_liste ;
i=0 ;
while (i<=nb_maillon_crees) {
printf("%dn", debut_liste->pid) ;
debut_liste = debut_liste->suiv ;
i++;
}

return 0 ;
}



Je n'ai pas vu de mécanisme de libération...



ah zut, j'ai oublie ca.... :/


Avatar
cyber
did wrote:
Salut
j'aimerai avoir vos avis sur ce code. Je me doute qu'il est pas
terrible. Dites moi ce qu'il ne va pas. Normalement, il devrait compiler ;)
J'ai zappe les parties ne concernant pas le C standard (enfin je crois :) )

did

ps: le but de ce programme est de creer un ordonnanceur, par le biais
d'une liste circulaire...



Tu ne veux pas que l'on fasse tes devoirs à ta palce aussi ?
C'est pour pomper lors d'un examen ?
Etudie et ne pose pas de questions.
Ici seule les ceritudes ont leur place.















--------------------------------

#include <stdio.h>

#define NB_PID_MAX 100
#define PID_T 6

typedef struct liste_s {
struct liste_s* suiv ;
int pid ;
} ordo_s ;

int main(void)
{
int nb_pid = 0, i=0 ;
int nb_maillon_crees = 0 ;
ordo_s* liste, *debut_liste ;
int tab_pid[NB_PID_MAX] ;
char pid_name[PID_T] ;
FILE* fic ;

if ((fic = fopen("pid.txt", "r")) == NULL) {
perror("erreur") ;
return -1 ;
}

while(1) {
while (fgets(pid_name, PID_T, fic)) {
tab_pid[i] = atoi(pid_name) ;
i++ ;
nb_pid++ ;
}

if (nb_pid == 0) {
int c = getchar() ;
}
else {
liste = (ordo_s*) malloc(sizeof* liste) ;
liste->pid = tab_pid[nb_maillon_crees] ;
liste->suiv = NULL ;
nb_maillon_crees++ ;
if (nb_maillon_crees == 1) {
debut_liste = liste ;
}
while(nb_maillon_crees < nb_pid ) {
liste->suiv = (ordo_s*) malloc(sizeof* liste) ;
liste->suiv->pid = tab_pid[nb_maillon_crees] ;
nb_maillon_crees++ ;
liste = liste->suiv ;
}
}
}

liste->suiv = debut_liste ;
i=0 ;
while (i<=nb_maillon_crees) {
printf("%dn", debut_liste->pid) ;
debut_liste = debut_liste->suiv ;
i++;
}

return 0 ;
}



Avatar
Jeremie Fouche
a écrit dans le message : bqq3hf$s9t$
did wrote:
Salut
j'aimerai avoir vos avis sur ce code. Je me doute qu'il est pas
terrible. Dites moi ce qu'il ne va pas. Normalement, il devrait compiler
;)


J'ai zappe les parties ne concernant pas le C standard (enfin je crois
:) )



did

ps: le but de ce programme est de creer un ordonnanceur, par le biais
d'une liste circulaire...



Tu ne veux pas que l'on fasse tes devoirs à ta palce aussi ?
C'est pour pomper lors d'un examen ?
Etudie et ne pose pas de questions.
Ici seule les ceritudes ont leur place.


Moi aussi j'aime bien rire...

--
Jérémie Fouché
- Enlève ta main pour me repondre.


Avatar
Bruno
dans l'article bqq5v4$5ve$, Jeremie Fouche à
a écrit le 05/12/2003 15:49 :

Tu ne veux pas que l'on fasse tes devoirs à ta palce aussi ?
C'est pour pomper lors d'un examen ?
Etudie et ne pose pas de questions.
Ici seule les ceritudes ont leur place.



tu nous gaves :(

--
Bruno Causse
http://perso.wanadoo.fr/othello


Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', "" wrote:

Tu ne veux pas que l'on fasse tes devoirs à ta palce aussi ?
C'est pour pomper lors d'un examen ?
Etudie et ne pose pas de questions.
Ici seule les ceritudes ont leur place.


*Plonk!*

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
un.gabacho.sans.pourrier
"" writes:

did wrote:
Salut
j'aimerai avoir vos avis sur ce code. Je me doute qu'il est pas
terrible. Dites moi ce qu'il ne va pas. Normalement, il devrait
compiler ;)

J'ai zappe les parties ne concernant pas le C standard (enfin je crois :) )
did

ps: le but de ce programme est de creer un ordonnanceur, par le
biais d'une liste circulaire...


Tu ne veux pas que l'on fasse tes devoirs à ta palce aussi ?
C'est pour pomper lors d'un examen ?
Etudie et ne pose pas de questions.
Ici seule les ceritudes ont leur place.


...¿ pero ? ¿ pero ?

¡ Pero eres un autentico tonto del higo !


Avatar
did
a écrit:


Tu ne veux pas que l'on fasse tes devoirs à ta palce aussi ?
C'est pour pomper lors d'un examen ?
Etudie et ne pose pas de questions.
Ici seule les ceritudes ont leur place.



Ben en fait, je sais ou je peux recuperer le code de ce programme. Donc,
si je voulais pomper, je vous aurez pas embete avec mes questions. Je
suis pas terrible en programmation, alors je demande des avis sur ce que
j'ai fait. Maintenant, on m'a repondu, et je trouve ca bien.
Merci :)
did

Avatar
Bernard Bandiera
did écrivait dans le message :
a écrit:


Tu ne veux pas que l'on fasse tes devoirs à ta palce aussi ?
C'est pour pomper lors d'un examen ?
Etudie et ne pose pas de questions.
Ici seule les ceritudes ont leur place.



Ben en fait, je sais ou je peux recuperer le code de ce programme.
Donc, si je voulais pomper, je vous aurez pas embete avec mes
questions. Je suis pas terrible en programmation, alors je demande
des avis sur ce que j'ai fait. Maintenant, on m'a repondu, et je
trouve ca bien.
Merci :)
did


salut, did.
je pense que si on t'a répondu, contrairement à ce qu'a vécu notre cher
, c'est que tu as d'abord cherché, et proposé ton code. Si ce cher
cyber (ou cryptono) avait fait un minimum d'effort, il n'aurait pas eu les
réponses qu'il a eues...

En conclusion (là, je parle d'expérience) : même si on est débutant, même si
on se trompe, même si on n'est pas très bon, il suffit d'amorcer la pompe
(bosser un peu par soi même) pour que les réponses affluent. Et faut pas se
priver, il y a ici des tas de gens compétents qui veulent bien prendre de
leur temps temps à aider les autres. Seulement, faut pas les prendre pour
des c***s...

--
Bernard

Gloire à qui, n'ayant pas d'idéal sacro-saint
Se borne à ne pas trop emmerder son voisin
Georges Brassens - Don Juan


Avatar
did
Bernard Bandiera a écrit:



salut, did.
je pense que si on t'a répondu, contrairement à ce qu'a vécu notre cher
, c'est que tu as d'abord cherché, et proposé ton code. Si ce cher
cyber (ou cryptono) avait fait un minimum d'effort, il n'aurait pas eu les
réponses qu'il a eues...

En conclusion (là, je parle d'expérience) : même si on est débutant, même si
on se trompe, même si on n'est pas très bon, il suffit d'amorcer la pompe
(bosser un peu par soi même) pour que les réponses affluent. Et faut pas se
priver, il y a ici des tas de gens compétents qui veulent bien prendre de
leur temps temps à aider les autres. Seulement, faut pas les prendre pour
des c***s...




Mais j'ai prit personne pour un con moi... :/

1 2