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 :

Retourner une chaine de caractére


Sujet :

C

  1. #21
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par insa59
    une ptite réponse peut etre????
    Eh, Ho, on n'est pas à la piece!!!

    Alors, si tu veux une réponse, commence peut etre par répondre à ceci:
    • MAX_CHAR, ca vient d'où (comment c'est déclaré)
    • le parametre int j passé à ta fonction, il représente quoi au juste
    • Le but (à moins que je n'ai pas compris le sens du sujet) n'est-il pas de faire une fonction qui renvoie une chaine de caractères si oui, pourquoi renvoyer... un entier
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  2. #22
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 191
    Par défaut
    Biensur c'est de retourner une chaine de caractere .

    Si tu regarde ma fonction le int j corresponds au parametres celui ci indiquera la ligne a prendre en compte. Car j'utilise une boucle while(fgets...) pour lire tt le fichier et un cpt qui s'increment a chaque passage a la ligne , ensuite lorsque la boucle se situe a la ligne j je recupere cette chaine pour la retourner a la fonction

    De plus je voulais repondre a sauviron, c'est un forum d'entraide dc si je demande de l'aide c'est parce que j'en ai besoin. Je n'ai pas compris comment utiliser la fct c tt simple

    Merci

  3. #23
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par insa59
    Biensur c'est de retourner une chaine de caractere .

    Si tu regarde ma fonction le int j corresponds au parametres celui ci indiquera la ligne a prendre en compte. Car j'utilise une boucle while(fgets...) pour lire tt le fichier et un cpt qui s'increment a chaque passage a la ligne , ensuite lorsque la boucle se situe a la ligne j je recupere cette chaine pour la retourner a la fonction

    De plus je voulais repondre a sauviron, c'est un forum d'entraide dc si je demande de l'aide c'est parce que j'en ai besoin. Je n'ai pas compris comment utiliser la fct c tt simple

    Merci
    Alors voici un exemple:
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    static int clean_fgets(char const *s_buffer, FILE *fp);
    static char * read_line(char *s_buffer, size_t buff_size, FILE *file, int line);
     
    int main(void)
    {
        int err = EXIT_SUCCESS;
        FILE *fp = NULL;
        char s_buffer[100] = {0};
     
        fp = fopen("test.txt", "r");
        if (fp != NULL)
        {
            if (read_line(s_buffer, sizeof s_buffer, fp, 3) != NULL)
            {
                puts(s_buffer);
            }
            else
            {
                fprintf(stderr, "La fin du fichier a été atteinte!\n");
            }
            fclose(fp), fp = NULL;
        }
        else
        {
            err = EXIT_FAILURE;
            fprintf(stderr, "Impossible d'ouvrir le fichier!\n");
        }
     
        return err;
    }
     
    /**
     * Lit la ligne n°line dans le fichier passé en argument et place le contenu
     * de cette ligne le tampon.
     *
     * ATTENTION: un message d'avertissement s'affiche si la taille du tampon est
     * insuffisante pour accueillir la ligne line, et que celle-ci a dû être
     * tronquée
     *
     * @param s_buffer tampon dans lequel sera placé la ligne lue
     * @param buff_size taille du tampon
     * @param file pointeur sur le fichier ouvert en lecture par l'utilisateur
     * @param line numéro de la ligne à lire
     *
     * @return pointeur sur le début du tampon passé en argument si la lecture a
     *         été un succès, ou NULL si la fin du fichier a été rencontrée.
     */
    static char * read_line(char *s_buffer, size_t buff_size, FILE *file, int line)
    {
        int i = line;
     
        char *p_ret = NULL;
        while (i-- > 0 && (p_ret = fgets(s_buffer, buff_size, file)) != NULL)
        {
            continue;
        }
        if (clean_fgets(s_buffer, file) != 0)
        {
            fprintf(stderr, "La ligne %d est trop longue et a été tronquée!\n", line);
        }
        return p_ret;
    }
     
    /**
     * Teste si la ligne du fichier ou l'entrée utilisateur à partir du flux d'entrée
     * standard n'a pas été tronquée par fgets(). Si la saisie est incomplète, le
     * reste de la ligne (si on travail sur un fichier) est ignoré ou le tampon du
     * flux d'entrée standard (si on travail sur stdin) est purgé, et un code
     * d'erreur est retourné.
     *
     * Si la saisie est correcte, le caractère de nouvelle ligne '\n' placé dans
     * le tampon par fgets() et effacé.
     *
     * @param s_buffer tampon contenant la saisie de fgets()
     * @param fp pointeur sur le fichier considéré, ou sur le flux d'entrée standard
     * @return code d'erreur dont la veleur est 1 en cas de saisie tronquée, et 0
     *         en cas de saisie correcte
     */
    static int clean_fgets(char const *s_buffer, FILE *fp)
    {
        int err = 0; /* error code */
        char *pc = strchr(s_buffer,'\n');
     
        if (pc != NULL) /* input OK */
        {
            *pc = '\0';
        }
        else /* input has been truncated */
        {
            int c;
            while ((c = fgetc(fp)) != '\n' && c != EOF)
            {
                /* We ignore all the remaining characters */
                continue;
            }
            /* we report that an error has been encountered */
            err = 1;
        }
        return err;
    }
    Pose des questions si tu ne comprends pas!

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/12/2014, 15h16
  2. Ma DLL retourne une chaine de caractère vide.
    Par alain8550 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/01/2010, 16h28
  3. retourner un nombre pour une chaine de caractère
    Par cotede2 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/06/2008, 13h26
  4. Longueur retourner pour une chaine de caractére
    Par locs dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 10/09/2007, 15h19
  5. Réponses: 23
    Dernier message: 13/11/2006, 03h33

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