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 :

Manipulation chaine de caractere


Sujet :

C

  1. #1
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut Manipulation chaine de caractere
    Bonjour

    printf("1tab1=%s\n",(char *)&tab1);

    Dans mon tab1 j'ai une chaine de valeur indeterminé qui peut contenir des valeur "14,12,4"

    J'aimerai separer cette chaine en 3 nombres int

    Quelqu'un à une idée de comment faire ?

    Merci

    Lionceau,

  2. #2
    Membre habitué Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Points : 199
    Points
    199
    Par défaut
    Bonjour, as tu deja fais un code?

    Je me demande s'il ne faut pas utiliser une fonction atoi.

  3. #3
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    voici le code actuelement :
    en bref c 'est pour decomposer la chaine afin de faire des push , pour une liste chainé


    Il faut utiliser une fonction atoi , mais avant il faut reussir a a avoir 3 chaine de caractere c 'est la ou je bug

    mais j'ai pas reussi.. alors svp merci si tu peux me conseiller/aider
    Voila le 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
    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
     
    //(char *)&tab1; Est sous la forme 1,12,6,88
    //On va donc devoir faire :
    //f_Id_Push(&(p1.liste_identifiant), 1);
    //f_Id_Push(&(p1.liste_identifiant), 12);
    //f_Id_Push(&(p1.liste_identifiant), 6);
    //f_Id_Push(&(p1.liste_identifiant), 88);
     
     
     
     
    								//printf("1tab1=%c\n",tab1[2]);
    //printf("1tab1=%s\n",(char *)&tab1);
    printf("1tab1=%s\n",(char *)&tab1);
     
     
     
    printf(" n=%d \n",n);
    //n++;
    printf("  nDepart=%d \n",nDepart);
    //printf("\n  n=%d \n",n);
    for(i=nDepart;i<n;i++)
    {
    			printf(" boucle nDepart=%d \n",nDepart);
    			printf(" boucle i=%d \n",i);
     
    									printf("2tab1[i]=%c\n",tab1[i]);
    									j=(atoi((char *)&tab1[i])+j);
    									if(tab1[i]==',') 
    									{
     
     
    										//*chaine=tab1[nDepart];
    										printf("j=%d\n",j);
    										//n est la valeur de l position de la virgule donc le mot cherché est entre nDepart et  (n-1)-nDepart 
    										/*for(j=nDepart;j<((n-1)-nDepart);j++)
    										{
    											printf("j=%d\n",j);
    											//(char *)chaine=strcat((char *)tab1[j],(char *)chaine);
    											printf("%s\n",chaine);
    										}*/
     
    											//longueur=n-nDepart;
    											//strncpy(chaine,nDepart,longueur);
    											//-------achanger-------nDepart=n+1;
    									}
     
    								}


    Ps : Excuse moi pour l'indentation , ca l'affiche mal




    Lionceau,

  4. #4
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    emprex merci pour ta réponse, j'ai trouver la solution.

    Voila le code : (si ca peux aider quelqu'un)
    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
    	//(char *)&tab1; Est sous la forme 1,12,6,88
    							//On va donc devoir faire :
    							//f_Id_Push(&(p1.liste_identifiant), 1);
    							//f_Id_Push(&(p1.liste_identifiant), 12);
    							//f_Id_Push(&(p1.liste_identifiant), 6);
    							//f_Id_Push(&(p1.liste_identifiant), 88);
     
     
    							printf("tabeau interne=%s\n",(char *)&tab1);
     
     
     
    							// ici, on va boucler dans le tab1. On copie dans tab2
    							int p_debut=0;
    							int n1=0; // pointeur sur tab1
    							int n2;   // pointeur sur tab2
    							int val;  // la valeur qui sera convertie
    							// Init du tab2
    							n2=0;
    							tab2[0]=0;
    							while(1) // ici, on va boucler infini
    							{
    							    //printf ("AAAA0 n1=(%d) tab1=(%s)\n",n1,(char *)&tab1);
    								while(tab1[n1])  // ici la boucle s'arrete à la fin de la chaine qui fini obligatoirement par un 0
    								{
    									//printf ("AAAA1 n1=(%d) n2=(%d)\n",n1,n2);
    								    if (tab1[n1] == ',') 
    									{
    									    n1++;  // passe au suivant pour tab1
    										break; // arrete si séparateur
    									}
    									tab2[n2]=tab1[n1];
    									n1++;
    									n2++;
    								}
    								tab2[n2]=0;  // fin de la chaine tab2
    								val=atoi((char *)&tab2); // conversion de la chaine vers int
    								printf("   --> contenu = (%d)\n",val);
     
    								if (!(tab1[n1])) break;  // Si on est en fin de chaine, arrete
     
    								// Init du tab2
    								n2=0;
    								tab2[0]=0;
     
    							}

    Lionceau,

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

Discussions similaires

  1. manipulation chaine de caractere
    Par speedy_souris dans le forum Débuter
    Réponses: 7
    Dernier message: 27/11/2009, 15h35
  2. manipulation chaine de caractere
    Par Alex35 dans le forum ASP
    Réponses: 9
    Dernier message: 08/02/2007, 14h11
  3. Manipuler une chaine de caracteres
    Par virtu67 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 28/12/2006, 15h31
  4. Manipulation chaîne de caractères
    Par jmde dans le forum Access
    Réponses: 7
    Dernier message: 07/12/2006, 09h37
  5. debutant asp manipulation chaine de caractere
    Par MaxiMax dans le forum ASP
    Réponses: 3
    Dernier message: 12/08/2005, 15h59

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