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 :

probleme avec cut


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Par défaut probleme avec cut
    bonjour, je suis novice en c, et je me trouve confronter a un petit probleme qui est :

    dans mon programme g fais une fonction coupeSousChaine():
    char coupeSousChaine(char ligne)
    {
    char sousChaine;
    sousChaine = (cut -f 1-3 -d . ligne);
    return sousChaine;
    }

    sauf que quand je veux compiler mon programme j'ai l'erreur :
    'cut' undeclared
    'f' undeclared
    syntax error before numeric constant

    si quelqu'un sais pourquoi j'ai cette erreur, je ne demande qu'à comprendre, manquerait il une librairie, si oui laquelle, j'ai chercher sur le net je n'ai pas trouvé.

    merci à toutes les bonnes ames qui voudront me repondre.

  2. #2
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sousChaine = (cut -f 1-3 -d . ligne);
    ça n'a pas l'air d'être du C.

    Aussi char est un caractère et non une chaîne de caractères.

  3. #3
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Ce n'est pas une syntaxe valide.
    Est-ce que "cut" est une fonction?
    Si oui, est-ce que ce qui la suit sont ses arguments?

    En C:
    soit f une fonction prenant 3 arguments, un appel à la fonction se fait ainsi:
    .

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    J'ai l'impression qu'il veut utiliser les commandes du shell unix dans un programme C directement.

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Dans ce cas il faut passer par des fonctions comme system(...) sur Windows.
    Sous Unix c'est popen(...) non?
    Mais ce n'est pas portable.

  6. #6
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    popen c'est si tu as besoin de recuperer la sortie il me semble... system() fonctionne sous Linux

  7. #7
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Oui, popen() c'est pour recuperer ce que la commande enverrait sur la sortie standard ou bien pour y ecrire ce qu'on ecrirait via l'entrée standard
    C'est l'équivalent des operateurs de redirection du shell < >

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Par défaut
    je recupere une ligne dans un fichier, et j'ai besoin de coupe une chaine de caractere delimiter par des '.' sur cette ligne.

    je ne sais pas comment faire, sur google, j'ai trouver cet exemple là avec cut, j'aurais aimer l'utiliser, ou trouver quelque chose qui à l'air aussi efficace mais pour un prigramme en c ?

    je suis preneuse de toute idées, remarque et commentaires.
    je vous remercie pour votre aide.

  9. #9
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    En C, ce n'est pas aussi simple, si tu veux que ça soit aussi simple, fait des scripts (shell, perl ou php ou ce que tu veux)

  10. #10
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Quelque chose de peu élégant mais qui marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      char t[]="azerty.bonjour.qwerty";
      char *p1=strchr(t,'.');
      char *p2=strrchr(t,'.');
      char sousChaine[20]="";
      char*i;
      int j;
      for(i=p1+1,j=0;i<p2;i++,j++){
                               sousChaine[j]=*i;
                               }
    A la fin sousChaine contient la chaine "bonjour" qui se trouvait entre les ".".
    Il y a surement mieux que la boucle "for" pour isoler la chaine se trouvant entre les pointeurs p1 et p2, une fonction dédiée mais je ne la connait pas.

  11. #11
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    La version élégante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      char t[]="azerty.bonjour.qwerty";
      char *p1=strchr(t,'.');
      char *p2=strrchr(t,'.');
      char sousChaine[20]="";
      memcpy(sousChaine,p1+1,(p2-p1-1)*sizeof(char));

  12. #12
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Mais elle a pas dit qu'il y avait que 2 points dans la chaine

  13. #13
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    je recupere une ligne dans un fichier, et j'ai besoin de coupe une chaine de caractere delimiter par des '.' sur cette ligne.
    A priori les données sont bien formatées; mais bien entendu si il y a un doute il vaut mieux faire une analyse de la chaine avant de la traiter.

  14. #14
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Encore mieux (merci à Mayti4) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char t1[100]="";
    char t2[100]="";
    char t3[100]="";
    char t[]="azerty.bonjour.qwerty";
    sscanf(t,"%[^.].%[^.].%[^.]",t1,t2,t3);
    A la fin t2 contient "bonjour".
    Cela permet en même temps de vérifier le bon formatage en regardant la valeur de retour de "sscanf".

  15. #15
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Par défaut
    merci beaucoup pour votre aide.
    du coup j'ai plus qu'a recommencer !
    vous me conseiller donc de tout faire avec des scripts shell ?
    des amis mon conseiller de tout faire en C++, est ce une bonne idée aussi ?

    pour la chaine de caractere, c'est une requete arp dont j'ai deja recuperer l'adresse ip source. après je veux recuperer seulement les 3 première partie de l'adresse ip. donc ex : 192.168.1

    voila merci encore

  16. #16
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Pas besoin de C pour faire ca, de C++ encore moins, un simple script shell suffit...

  17. #17
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Par défaut script shell
    Oui merci, c'est ce que je commencais à faire.
    merci à tous pour vos reponses, je devrais me debrouiller avec les cours sur le net, google et les forums.
    merci encore.

  18. #18
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Par défaut
    bonjour, je vous ammene ma solution.

    j'ai donc fais un script shell et pour cut :
    n1=$(echo ${ip} | cut -d'.' -f 1)

    voila mon exemple est pour recuperer la première partie d'une adresse ip après chacun l'utilise comme bon lui semble.

    cut n'est pas une methode utilisable en C du moins je n'ai pas trouver, en C il faut utiliser str_sub il me semble.

    voila en espérant que cela puisse servir à quelqu'un.
    merci encore à tous ceux qui m'ont aidé.

  19. #19
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bessonnet
    bonjour, je suis novice en c,
    Alors il faut apprendre les bases.



    et je me trouve confronter a un petit probleme qui est :

    dans mon programme g fais une fonction coupeSousChaine():
    char coupeSousChaine(char ligne)
    {
    char sousChaine;
    sousChaine = (cut -f 1-3 -d . ligne);
    return sousChaine;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char const *sousChaine = "cut -f 1-3 -d . ligne";
    Mais je le répète commence par les bases.

    Il y a des tutos et des réferences de livres sur ce site...

  20. #20
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seriousme
    Dans ce cas il faut passer par des fonctions comme system(...) sur Windows.
    Sous Unix c'est popen(...) non?
    Mais ce n'est pas portable.
    C'est system(). Ce qui n'est pas portable c'est la commande, pas la fonction qui est tout ce qu'il a de plus standard.

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

Discussions similaires

  1. probleme avec cut
    Par amira88 dans le forum Prolog
    Réponses: 2
    Dernier message: 04/01/2010, 14h31
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 11h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 23h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 08h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 09/06/2002, 00h06

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