Chaîne de caractère en c
Fermé
rahm 90
Messages postés
17
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
20 mai 2011
-
10 mai 2011 à 22:14
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 11 mai 2011 à 06:59
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 11 mai 2011 à 06:59
A voir également:
- Chaîne de caractère en c
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
3 réponses
En C?
Tu fais un tant que (tu trouves un espace)
tu te sers de strchr avec un pointeur, lui indiquant le séparateur (ici " ", ton espace) pour récupérer ton bout de chaîne.
tu marques ton bout de chaine.
fin tant que
En gros c'est l'idée..
Tu fais un tant que (tu trouves un espace)
tu te sers de strchr avec un pointeur, lui indiquant le séparateur (ici " ", ton espace) pour récupérer ton bout de chaîne.
tu marques ton bout de chaine.
fin tant que
En gros c'est l'idée..
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
10 mai 2011 à 22:22
10 mai 2011 à 22:22
Salut,
La réponse est simple :
Apprends à programmer !!!
Il y a pas mal de cours sur Internet sur le C. Il te suffis d'en suivre un, et d'apprendre. Il y a aussi de très bons livres.
Et tant qu'on y est, soit plus poli (merci d'avance, cordialement, s'il vous plait, ... et pas de "je veux").
Indice : Fais une boucle.
La réponse est simple :
Apprends à programmer !!!
Il y a pas mal de cours sur Internet sur le C. Il te suffis d'en suivre un, et d'apprendre. Il y a aussi de très bons livres.
Et tant qu'on y est, soit plus poli (merci d'avance, cordialement, s'il vous plait, ... et pas de "je veux").
Indice : Fais une boucle.
Hxyp
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
54
Modifié par Hxyp le 11/05/2011 à 07:01
Modifié par Hxyp le 11/05/2011 à 07:01
Bonjour,
Comme vous prenez en compte le "if" il vous faut créer une sorte de dictionnaire des mots que vous voulez extraire.
Un petit exemple j'ai commenté chaque ligne vous ne devriez pas avoir de problème pour le refaire à vôtre sauce :
Aperçu de la sortie :
Comme vous prenez en compte le "if" il vous faut créer une sorte de dictionnaire des mots que vous voulez extraire.
Un petit exemple j'ai commenté chaque ligne vous ne devriez pas avoir de problème pour le refaire à vôtre sauce :
#include <stdio.h> /* printf */ #include <ctype.h> /* isalpha */ #include <string.h> /* strlen strncmp */ int main(void) { /* i et j pour les boucles * stx_nb nombre de mot dans le dico * a_nb nombre de caracteres dans le buffer à parser */ int i=0,j,stx_nb=3,a_nb; /* stx le dico */ char *stx[8]={"if","else","return"}; /* a le buffer à parser avec des tab espace et saut de ligne et mots du dico */ char *a="\tif( a > b ){ return 0; }\n\telse return 1;"; /* ptr un pointeur de char */ char *ptr; /* a_nb recupere la longueur de a */ a_nb=strlen(a); /* affiche a */ printf("chaine :\n%s\n------------\n",a); /* une boucle sur chaque char du buffer a */ while(i<a_nb){ /* ignore les espace, tab et saut de ligne */ if(a[i]!=' '&&a[i]!='\t'&&a[i]!='\n'){ /* si le caractere actuel est alphabétique */ if(isalpha(a[i])){ /* alors on pointe sur ce caractere comme etant * le debut d'une nouvelle chaine : ptr */ ptr=&a[i]; /* une boucle sur le nombre de mot du dico */ for(j=0;j<stx_nb;j++){ /* comparaison entre mots du dico et emplacement actuel * utilisant le pointeur et la longueur du mot du dico testé */ if(!strncmp(ptr,stx[j],strlen(stx[j]))){ /* si concordance affichage du mot */ printf("%s\n",stx[j]); /* et donc un décalage de i à la longueur du mot trouvé */ i+=strlen(stx[j])-1; /* on casse cette boucle car un mot est trouvé pas besoin * de la continuer */ break; } } /* si j atteind stx_nb c'est qu'aucun mot du dico n'a été trouvé * alors on affiche le caractère alphabétique qui ne fait pas * partie du dico */ if(j==stx_nb) printf("%c\n",a[i]); } /* si le caractère n'est pas alphabétique alors on l'affiche * (faudrait continuer pour extraire les nombre etc ici)*/ else{ printf("%c\n",a[i]); } } /* incremente i */ i++; } return 0; }
Aperçu de la sortie :
chaine : if( a > b ){ return 0; } else return 1; ------------ if ( a > b ) { return 0 ; } else return 1 ;