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 Strcat


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut probleme avec Strcat
    bonjour,
    j'ai un probleme avec la fonction strcat, le programme se bloque tjr sur cette intruction sans me donner des erreurs.
    voicile code :
    char url[]="";
    printf("Donner l'emplacement du fichier :");
    scanf("%s",&url);
    char* tmp;
    char* nom_fichie;
    for(int i=nb;i<=strlen(url);i++)
    {
    tmp=(char*)url[i];
    strcat(nom_fichie,tmp);
    }

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Problème d'allocation de tes chaînes de caractères. Il faut allouer de l'espace avant de s'en servir.

    Jc

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    vous pouvez me donner un exemple sur le code ke jvous ai donné, merci d'avance

  4. #4
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par yassinert
    vous pouvez me donner un exemple sur le code ke jvous ai donné, merci d'avance
    Je ne comprends pas exactement ce que tu veux faire, peux-tu donner un exemple au moins ?

    Jc

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    je ve dire un exemple d'allocation sur mon code

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    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 yassinert
    vous pouvez me donner un exemple sur le code ke jvous ai donné, merci d'avance
    Statique :
    Dynamique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char* tmp = malloc(TAILLE);
    Le C n'est pas un langage jouet. C'est un langage de professionnels qui s'apprend en suivant des cours, un tutoriels, ou un livre. Des références sur ce site et le mien.

  7. #7
    Membre Expert
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Par défaut
    A propos de bons livres et de bons cours sur le langage C, les bonnes et saines pratiques de la programmation, il y a aussi le manuel de référence de la GLibC, extraordinairement bien foutu. Les pages du manuel sont truffées de notes exhaustives concernant la portabilité des programmes, les exemples sont clairs et bien faits, le tout est parfaitement rédigé, merveilleusement bien expliqué.

    Bref, quand je reprends mon K&R2, j'ai l'impression d'avoir un jouet entre mes mains, même si, il est vrai, les deux documents n'ont pas la même vocation.

  8. #8
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    voici le changement ke jé fé et sans rien donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    char * url=(char *)malloc(10);
             char* tmp ;
             tmp = (char*)malloc (10);
             char* nom_fichie;
             nom_fichie=(char*)malloc (10);
     
             for(int i=nb;i<=strlen(url);i++)
             {
             tmp=(char*)url[i];
             //nom_fichie=nom_fichie+tmp;
             //myStrcat(nom_fichie,tmp);
             strcat(nom_fichie,tmp);
             }

  9. #9
    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
    Tous ces casts en char* sont inutiles.
    Et le tmp=(char*)url[i]; est mauvais. Précise ce que tu cherches à faire avec ce bout de code...
    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.

  10. #10
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    j'ai une chaine de caractére URL: par exp c:/doc/yassine.txt
    et je ve jsute recuperer le nom du fichier ca ve dire la deniere partie de l'URL yassine.txt

  11. #11
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par yassinert
    j'ai une chaine de caractére URL: par exp c:/doc/yassine.txt
    et je ve jsute recuperer le nom du fichier ca ve dire la deniere partie de l'URL yassine.txt
    Et pourquoi utiliser strcat alors ? Ce n'est vraiment pas la bonne fonction. Il suffit de parcourir la chaîne à l'envers pour trouver le dernier '\' et ensuite faire une copie avec strcpy...

    Jc

  12. #12
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    beh cé ke je fesais moi, je parcours la chaine, et puis je concatene apartir du "/" chaque caractere a son precedent pour avoir la chaine "yassine.txt"

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    d'abord ça m'énerve depuis le début :



    Ecrit en français...

    Deuxièmement strcat comme son nom l'indique concatène des chaînes.

  14. #14
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    ok desolé,
    je recapitule: c'est ce que je fesais moi, je parcours la chaine "c:/doc/yassine.txt", et puis en conmencant de "/" je concatene chaque caractere à son precedent afin d'avoir la chaine "yassine.txt".

  15. #15
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    fearyourself t'as donné la solution...

    Citation Envoyé par fearyourself
    Il suffit de parcourir la chaîne à l'envers pour trouver le dernier '\' et ensuite faire une copie avec strcpy...

  16. #16
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    oui, mais copier quoi ? où? en parcourant la chaine je dois rassemble caractére par caractére jusqu'a avoir le nom du fichier, donc je vois pas l'interet du strcpy, vous pouvez me donner un exemple de ca ?

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    As tu avant de coder, fait l'algo de ta recherche de chaine?
    Connais tu le fonctionnement d'une chaine de caracatere?

    Sinon tu copies dans ta nouvelle chaine de caractere.

    Un peu de reflexion, un stylo, un papier, y a que ça de vrais.

  18. #18
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par theshark85
    As tu avant de coder, fait l'algo de ta recherche de chaine?

    Sinon tu copies dans ta nouvelle chaine de caractere.

    Un peu de reflexion, un stylo, un papier, y a que ça de vrais.
    Voici un algorithme possible (je suis de bonne humeur ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    - Trouver le dernier '/'
    - Soit n la taille de la chaîne à copier (nombre de caractères entre le '/' et la fin de la chaîne)
    - Allouer une zone de (n+1) caractères (pour le '\0')
    - Copier le reste de la chaîne dans cette zone.
    Code chaque partie séparément et tu auras ta solution,
    Jc

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    Citation Envoyé par fearyourself
    Voici un algorithme possible (je suis de bonne humeur ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    - Trouver le dernier '/'
    - Soit n la taille de la chaîne à copier (nombre de caractères entre le '/' et la fin de la chaîne)
    - Allouer une zone de (n+1) caractères (pour le '\0')
    - Copier le reste de la chaîne dans cette zone.
    Code chaque partie séparément et tu auras ta solution,
    Jc

    Tu es bien gentils

  20. #20
    Membre Expert
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Par défaut
    Il y a déjà une fonction qui fait ça, définie dans XPG : basename().

    http://pedago.info.iut.u-bordeaux1.f...c_5.html#SEC79

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/10/2007, 15h33
  2. Problème avec strcat
    Par Bahan dans le forum C
    Réponses: 5
    Dernier message: 22/05/2006, 14h08
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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