IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

besoin d'avis sur mon code


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Par défaut besoin d'avis sur mon code
    bonjour,
    je viens d'ecrire une fonction qui lit et ecrit dans un fichier
    elle fait bien le travail mais ne s'arrete pas car j'ai ce message dela console "
    processus arrete
    "

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    FILE* read_write(FILE* f){
    	FILE* f_lign = fopen("text_lign.txt","r+");
    	char c=fgetc(f);
    	while((f!=NULL)&&(c!=EOF)){
    		if(((c==' ')||(c=='\n'))){	
    			fputs("\n",f_lign);
    			//printf("\n");
    		} else {
    			fputc(c,f_lign);
    			//printf("%c",c);
    		}
    		c=fgetc(f);
    	}
    	return f_lign;
    	fclose(f_lign);
    }
    merci d'avance

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Elle ne s'arrête pas car j'ai le message "processus arrêté"
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    car sa n'execute pas la suite du programme
    pendant un moment on a l'impression qu'il ya un beug et ensuite sa m'affiche processus arrete
    si tu veux je te met l'ensemble du code

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Par défaut
    voici l'ensemble de mon code

    fichier full.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #include <stdlib.h>
    #include <stdio.h>
    #include <assert.h>
    #include <string.h>
    #include "test.h"
    #include "test.c"
    #include "test_read_fich.c"
    #define TAILLE_MAX 28
     
    Pelt chain(FILE *p){
    	Pelt li = malloc(sizeof(elt));
    	char *c =malloc(sizeof(char));
    	fgets(c,TAILLE_MAX,p);
    	elt f=new_elt(c);
    	li=new_list();
    	li=add(li,f);
    	while((*c)!=EOF){
    		f=new_elt(c);	
    		li=add(li,f);	
    		fgets(c,TAILLE_MAX,p);
    	}
     
    	return li;
    }
     
    int main(){
    	printf("afic 12");
    	FILE* fic = NULL;
    	printf("afic 13");
    	FILE* f = NULL;
    	printf("afic 14");
    	fic = fopen("test.txt","r");
    	printf("afic hjhjhj ");
    	assert(fic!=NULL);
    	printf("afic ");
    	f=read_write(fic);
    	printf("afic889 ");
    	Pelt g=malloc(sizeof(elt));
    	printf("afic0023 ");
    	g=chain(f);
    	affich_list(g);
    	printf("afic good5848484 ");
    	fclose(fic);
    	return EXIT_SUCCESS;
    }
    fichier test_read.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <stdlib.h>
    #include <stdio.h>
    #include <assert.h>
    #include <string.h>
    #include "test.h"
     
    FILE* read_write(FILE* f){
    	FILE* f_lign = fopen("text_lign.txt","r+");
    	assert(f!=NULL);
    	char c=fgetc(f);
    	while((c!=EOF)){
    		if(((c==' ')||(c=='\n'))){	
    			fputs("\n",f_lign);
    			//printf("\n");
    		} else {
    			fputc(c,f_lign);
    			//printf("%c",c);
    		}
    		c=fgetc(f);
    	}
    	return f_lign;
    	fclose(f_lign);
    }
     
     
     
     
     
    /**int main(){
            FILE* fic = NULL;
            fic = fopen("test.txt","r");
            assert(fic!=NULL);
            printf("afic ");
            read_write(fic);
            fclose(fic);
            return EXIT_SUCCESS;
    }**/
    fichier test.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #include <stdlib.h>
    #include <stdio.h>
    #include <assert.h>
    #include <string.h>
    #ifndef TEST_H
    #define TEST_H
     
     
    typedef struct elt *Pelt;
    typedef struct elt {
    	char* nam;
    	Pelt next;
    }elt;
     
    typedef struct liste{
    	Pelt first;
    	int size;
    }*liste;
     
    // fonction defini dans test.c
    elt new_elt (char *n);
    Pelt new_Pelt(elt e);
    Pelt new_list();
    Pelt add_vid(Pelt lister, elt te);
    Pelt last_elt(Pelt l);
    Pelt add_list_elt(Pelt list, elt e);
    Pelt add(Pelt list, elt e);
    Pelt add_Pelt(Pelt list, Pelt b);
    void affich_list(Pelt r);
    Pelt prev_elt(Pelt l, elt e);
    Pelt suiv_elt(Pelt l, elt e);
    Pelt ins_elt(Pelt l, elt e,elt h);
     
    FILE* read_write(FILE* f);
    //fin fonction defini dans test_read_fich.c
     
    Pelt chain(FILE *p);
    //fin fonction defini dans full_chain.c
    #endif

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par chrislains Voir le message
    voici l'ensemble de mon code
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct elt *Pelt;
    Bonjour

    M8oi, quand je vois ça, j'arrête de lire. Cacher une étoile est la dernière des choses à faire. On ne sait plus si les variables sont des pointeurs ou pas. Or, savoir ce qu'on manipule est primordial en C.

    Citation Envoyé par chrislains Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pelt chain(FILE *p){
    	Pelt li = malloc(sizeof(elt));
    	char *c =malloc(sizeof(char));
    Et voilà. "c" est un pointeur (on se demande d'ailleurs pourquoi tu ne l'as pas défini directement comme "char c") et "li" est aussi un pointeur. Sauf que les deux pointeurs (qui sont du même rang) n'ont pas le même nombre (visible) d'étoiles. Comment veux-tu t'en sortir après ça...

    Citation Envoyé par chrislains Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Pelt chain(FILE *p){
    	char *c =malloc(sizeof(char));
    	fgets(c,TAILLE_MAX,p);
    Ah oui, classe !!!

    Citation Envoyé par chrislains Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    FILE* read_write(FILE* f){
    	FILE* f_lign = fopen("text_lign.txt","r+");
    	...
    	return f_lign;
    	fclose(f_lign);
    }
    Ouais, pourquoi pas !!! Ce qui me tue le plus, c'est que ça ne te choque même pas au moment où tu l'écris. Mais bon, vu ce que j'ai vu avant...


    Autres remarques: ta gestion des erreurs est très mal faite. Tes assertions feront quitter salement ton code si elles ne sont pas respectées. Or, quand quelque chose se passe mal, il faut gérer (nettoyer les ressources allouées, etc) et non pas tout quitter comme un malpropre.
    Exemple de gestion
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <type>fonction(...)
    {
    	char *xxx=NULL;
    	FILE *yyy=NULL;
    	int *zzz=NULL;
     
    	errno=0;
    	if ((xxx=malloc(...)) == NULL) goto fin:
    	if ((yyy=fopen(...)) == NULL) goto fin:
    	if ((zzz=malloc(...)) == NULL) goto fin:
     
    	... (travail) ...
     
    	fin:
    	if (xxx) free(xxx);
    	if (yyy) fclose(yyy);
    	if (zzz) free(zzz);
    	return errno == 0 ?valeur_ok :valeur_speciale_indiquant_erreur (souvent NULL)
    }

    Et bon ben si les types standards ont un suffixe "_t" dans leur nom, ce n'est peut-être pas pour rien. Donc toi, ce serait bien de mettre un préfixe "t_" à tes propres types...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 079
    Par défaut
    M8oi, quand je vois ça, j'arrête de lire.
    Finalement, tu l'as quand même fais, moi j'ai vraiment arrêté, je ne comprend absolument pas la plus value pédagogique d'insister sur cette mauvaise pratique...

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Et bon ben si les types standards ont un suffixe "_t" dans leur nom, ce n'est peut-être pas pour rien. Donc toi, ce serait bien de mettre un préfixe "t_" à tes propres types...
    En gros, si je crée un type que j'appelle ens, il faudrait que j’écrive t_ens ?

Discussions similaires

  1. [XL-2003] Votre avis sur mon code en VBA ?
    Par [ZiP] dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2010, 13h56
  2. Besoin d'avis sur mon rapport hijackthis
    Par gkhan dans le forum Sécurité
    Réponses: 16
    Dernier message: 29/05/2008, 19h57
  3. Besoin d'avis sur mon formulaire
    Par Olivier Regnier dans le forum Web
    Réponses: 2
    Dernier message: 16/11/2007, 09h46
  4. [FFT] Votre avis sur mon code
    Par deubelte dans le forum C++
    Réponses: 1
    Dernier message: 10/02/2007, 20h14
  5. Besoin d'avis sur mon thread
    Par SanNash dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 20/06/2006, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo