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 :

récupérer une chaine de caractere dans un fichier


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 302
    Points : 54
    Points
    54
    Par défaut récupérer une chaine de caractere dans un fichier
    bonjour,

    je voudrais savoir comment on fait pour récupérer une chaine de caractere dans un fichier.
    en fait je dois lire mon fichier et afficher les lignes qui contiennent la chaine de caractere "0".
    Je suis arriver à faire pour 0 tout seul mais je ne sais pas comment faire pour ajouter les double cotes

    j'ai fait:
    zero=strchr(chaineint,'0');
    cette fonction me permet de voir si chaineint contient le caractere 0 mais moi je veux voir si elle contient le caractere "0" et je pense que la fonction diffère quand c'est un seul caractere à une chaine de caractere

    pouvez vous m'aider please

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Il te faut plutôt utiliser la fonction strstr qui elle, recherche non pas un caractère mais une sosu-chaîne

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
    #include <string.h>
     
     
    int main (void)
    {
       const char * str = "Chaine avec un \"0\" a l'interieur";
       printf ("%s\n", strstr (str, "\"0\""));
     
       return 0;
    }
    Voilà

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 302
    Points : 54
    Points
    54
    Par défaut
    merci franck!!
    je n'etais pas près de trouver, je n'ai jamais vu cette fonction.

    j'ai une autre petite question, je travaille sous GTK+ et j'ai vu que tu avais le petit logo donc je suppose que tu connais bien. Peux tu me dire comment on appelle une fonction.
    en fait dans mon interface graphique j'ai un bouton enregistrer et un bouton quitter. Dans mon programme principal je connecte mes boutons à mes fonctions le truc c'est que lorsqu'on clique sur quitter il faut que cà enregistre, pour ca il faudrait rappeller la fonction enregistrer dans la fonction quitter mais comment faire? Faut il reconnecté le boutton enregistrer dans la fonction quitter? enfin voila je comprend pas très bien comment ca marche en gtk

    merci,
    pepsister

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par pepsister
    j'ai une autre petite question, je travaille sous GTK+ et j'ai vu que tu avais le petit logo donc je suppose que tu connais bien.



    Citation Envoyé par pepsister
    Peux tu me dire comment on appelle une fonction.
    en fait dans mon interface graphique j'ai un bouton enregistrer et un bouton quitter. Dans mon programme principal je connecte mes boutons à mes fonctions le truc c'est que lorsqu'on clique sur quitter il faut que cà enregistre, pour ca il faudrait rappeller la fonction enregistrer dans la fonction quitter mais comment faire? Faut il reconnecté le boutton enregistrer dans la fonction quitter? enfin voila je comprend pas très bien comment ca marche en gtk
    En fait, tu peux simplement appeler ton callback "enregistrer" dans ton callback "quitter". Deux choix se posent à toi pour le passage des arguments!
    1. Tu n'utilises aucun des deux arguments, tu peux sans problème passer les paramètre sous la valeur NULL lors de l'appel de la fonction enregistrer.
    2. Tu peux sans problème, passer les paramètres de ta fonction quitter à la fonction enregistrer, si tu ne les utilises pas dans la fonction enregistrer (comme avant quoi).


    Si tu utilises par exemple l'argument "data" dans la fonction enregistrer, passe là également dans la fonction quitter pour marquer l'coup car je ne sais pas si l'argument est placé même lorsque la fonction n'est pas appelée directement par le widget auquel elle est associée et alors tu passes le paramètre data comme second paramètre lors de l'appel à ta fonction d'enregistrement !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 302
    Points : 54
    Points
    54
    Par défaut
    comment fait on un callback
    voila en fait l'appel de mes fonctions quand je clique sur mes boutons:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /* Connexion du signal "clicked" du bouton effacer */     
        g_signal_connect(G_OBJECT(pButton_effacer), "clicked", G_CALLBACK(Effacer), (GtkWidget*) supprimer);
     
     /* Connexion du signal "clicked" du bouton enregistrer */     
       g_signal_connect(G_OBJECT(pButton_enregistrer), "clicked", G_CALLBACK(Enregistrer), (GtkWidget*)enregistrer);
    et voila mes fonctions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void Enregistrer(GtkWidget *penregistrer, gpointer data[3])
    void Quitter(GtkWidget* pquitter, gpointer data)
    est ce que les callback s'appelle comme mes connexion du signal clicked? et je ne vois pas trop quoi passer en paramètre vu la forme de l'appelle si c'est ca.

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par pepsister
    comment fait on un callback
    voila en fait l'appel de mes fonctions quand je clique sur mes boutons:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /* Connexion du signal "clicked" du bouton effacer */     
        g_signal_connect(G_OBJECT(pButton_effacer), "clicked", G_CALLBACK(Effacer), (GtkWidget*) supprimer);
     
     /* Connexion du signal "clicked" du bouton enregistrer */     
       g_signal_connect(G_OBJECT(pButton_enregistrer), "clicked", G_CALLBACK(Enregistrer), (GtkWidget*)enregistrer);
    et voila mes fonctions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void Enregistrer(GtkWidget *penregistrer, gpointer data[3])
    void Quitter(GtkWidget* pquitter, gpointer data)
    est ce que les callback s'appelle comme mes connexion du signal clicked? et je ne vois pas trop quoi passer en paramètre vu la forme de l'appelle si c'est ca.
    Mais les callback (fonctions de rappel) sont justement les fonctions que tu enregistres avec l'appel à g_signal_connect comme tu l'as montré !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 302
    Points : 54
    Points
    54
    Par défaut
    bonjour,
    je ne vois pas trop ce que tu veux dire. et je ne vois pas quoi passer en arguments, voila comment j'appelle ma fonction enregistrer est ce ca?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (resu!=0)
         {
              g_signal_connect(G_OBJECT(NULL),NULL, G_CALLBACK(Enregistrer), NULL);
         gtk_main_quit();
         }
         else
    merci,
    pepsister

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par pepsister
    bonjour,
    je ne vois pas trop ce que tu veux dire. et je ne vois pas quoi passer en arguments, voila comment j'appelle ma fonction enregistrer est ce ca?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (resu!=0)
         {
              g_signal_connect(G_OBJECT(NULL),NULL, G_CALLBACK(Enregistrer), NULL);
         gtk_main_quit();
         }
         else
    merci,
    pepsister
    Non, vais t'expliquer... Mettons qu'on dispose d'un callback quitter et un enregistrer, tous les deux sous la forme (pour un bouton par exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void quitter (GtkWidget * wid, gpointer data);
    void enregistrer (GtkWidget * wid, gpointer data);
    Tous les deux sont connectéq avec g_signal_connect sur leur bouton respectif ... Ok jusque là c'est ce que tu as !

    Ensuite, en appuyant sur le bouton"quitter", tu appeles le callback de même nom (pour l'exemple) mais tu veux pouvoir également appeler le callback "enregistrer" depuis le callback "quitter", hé bien rien de plus compliqué, admettons la définition du callback "quitter":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void quiter (GtkWidget * wid, gpointer data)
    {
       ...
       /*
         * Appel du callback 'enregistrer' ...
         * Ici on suppose que tu veuilles transmettre la donnee 'data'
         * au callback pour 'enregistrer' !
        */
       enregistrer (NULL, data);
       ...
    }

    Voilà, c'est tout simplement ce que dont je parlais, rien de plus compliqué, un callback reste une simple fonction comme toutes les autres donc rien d'affolant

    En espérant t'avoir éclairé

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 302
    Points : 54
    Points
    54
    Par défaut
    en effet tu m'as bien aider, maintenant je suis passée sous glade et les fonctions sont complètement différentes. J'ai vu que pour faire un gtk_label_set_text() il faut utiliser sous glade un lookup_widget()
    Mais je ne comprend pas bien comment marche glade
    pour déclarer une chaine de caractere il faut faire un gchar output[0]"bonjour"; et pour un gtk_entry_get_text on utilise un strcat(output,gtk_entry_get_text(GTK_ENTRY(rntry)));
    je ne vois pas tout ca comment sa marche.
    Voila mon code en C sur gtk:
    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
     
    GtkWidget *pQuestion1;
     
        /*caractérisant le buffer (début du texte et fin du texte)*/
       GtkTextBuffer* pTextBuffer;
        GtkTextIter iStart;
    	GtkTextIter iEnd;
     
    	/*création de variables locales pour utiliser le tableau de pointeurs*/
    	GtkWidget* pWindowL;
        GtkWidget* pTextViewL;
        GtkEntry* pEntryL;
     
        /*affectation des variables dans le tableau de pointeurs*/
        pTextViewL=user_data[0];    
        pEntryL=user_data[1];
        pWindowL=user_data[2];
     
     
     
    /* Creation de la boite de message */
        /* Type : Question -> GTK_MESSAGE_QUESTION */
        /* Boutons : 1 OUI, 1 NON -> GTK_BUTTONS_YES_NO */
        pQuestion1 = gtk_message_dialog_new (GTK_WINDOW(pWindowL),GTK_DIALOG_MODAL,GTK_MESSAGE_QUESTION,GTK_BUTTONS_YES_NO,"Voulez vous vraiment\neffacer les textes saisis?");
     
        /* Affichage et attente d'une reponse */
       switch(gtk_dialog_run(GTK_DIALOG(pQuestion1)))
        {
     
        case GTK_RESPONSE_YES: 
                /* OUI -> On efface le contenu des textes saisis */	   
                /* On recupere le buffer */
    	         pTextBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextViewL));
    	         /* On recupere l'origine du buffer */
    	         gtk_text_buffer_get_start_iter(pTextBuffer, &iStart);
    	         /* On recupere la fin du buffer */
    	         gtk_text_buffer_get_end_iter(pTextBuffer, &iEnd);
                /* OUI -> on efface la zone de texte*/
                gtk_text_buffer_delete(pTextBuffer,&iStart,&iEnd); 
                gtk_widget_destroy(pQuestion1);
                gtk_entry_set_text(pEntryL," ");
                break;
            case GTK_RESPONSE_NO: 
                /* NON -> on detruit la boite de message */
                gtk_widget_destroy(pQuestion1);
               break;
         } 
     
    }
    je voudrais le rentrer dans la fonction générer par glade:
    void on_button4_clicked(GtkButton *button,gpointer user_data[3])
    mais je ne vois pas comment le traduire en glade, faut il déclarer mon tableau de pointeur ou est ce suffisant comme ca, en glade je ne suis pas sure que sa utilise un buffer c'est plutot un TextView ?
    enfin voila je ne comprend pas comment marche glade au niveau programmation sinon au niveau graphique interface j'ai aucun problème pour l'instant pour construire ma fenetre.
    merci,
    pepsister

  10. #10
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Je n'utilise pas Glade désolé et je ne te le conseil pas plus si tu ne maîtrise pas encore trop GTK+ ! Par ailleurs, si tu as d'autres questions concernant GTK+, fait plutôt un nouveau sujet sur le forum GTK+, merci

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 302
    Points : 54
    Points
    54
    Par défaut
    merci,

    Pour glade malheureusement je n'ai pas le choix ca m'a été imposé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 25/03/2008, 10h42
  2. Remplacer une chaîne de caractères dans un fichier .hex
    Par subsix dans le forum Assembleur
    Réponses: 8
    Dernier message: 23/11/2006, 21h06
  3. Réponses: 10
    Dernier message: 16/06/2006, 13h53
  4. Réponses: 10
    Dernier message: 22/05/2006, 11h45

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