Je cherche à retourner la position d'un caractére dans une chaine par exemple char chaine[]="salut";
Si l'utilisateur tape s , ça donnera le s se trouve à chaine[0]
avec un tableau de int il n'y a pas de problème par contre, ça bug avec des chaines de caractères on dirait :
int i;
int tab[T];
int nombre_recherche=0;
int nb=0;
printf("Ce programme permet de trouver toutes les occurrences d'un nombre.\n");
printf("Entrer 10 nombres:\n");
for (i=0;i<T;i++)
{
printf("t[%d]: ",i);
scanf("%d",&tab[i]);
}
printf("Entrez le nombre a rechercher : ");
scanf("%d",&nombre_recherche);
for (i=0;i<T;i++)
{
if (tab[i] == nombre_recherche)
{
printf("t[%d],",i);
nb++;
}
}
printf("\n%d occurent(s) trouve(s).\n",nb);
Voila je n'ai pas de problème par contre ici :
char chaine[]="salut";
char car[10];
int i;
char *rech=NULL;
scanf("%s",car);
rech=strstr(chaine,car);
if (rech!= NULL)
{
printf("lecture a partir de %s: %s\n",car,rech+1);
for (i=0;chaine[i] != 0;i++) //Parcours toute la chaine
{
if (car[i]==chaine[i]) Si car à la position i est égal a a la chaine à la position i
printf("chaine[%d],",i);
}
}
/* on récupère une chaine comme ça : */
char chaine[100] = "";
scanf("%s", chaine);
Sinon, pour rechercher un caractère et retourner la position dans la chaine, suffit de parcourir la chaine (comme un tableau), et si le caractère actuel de la chaine est égal au caractère à rechercher, on retourne l'indice du tableau.
Je te conseille de faire ça dans une fonction plutôt que dans le main.
J'ai codé rapidement ça, ne regarde que si tu as des soucis.
int search (char *s, char carac)
{
int i;
for(i = 0; s[i] != '\0';i++)
if(s[i] == carac)
return i;
return 0;
}
int main (void)
{
char *s = "abcdefghijklmnopqrstuvwxyz";
char c = 'k';
int pos = search(s, c);
printf("caractere %c à la position %d, \ndans la chaine %s", c, pos, s);
return 0;
}
Je cherche à retourner la position d'un caractére dans une chaine par exemple char chaine[]="salut";
Si l'utilisateur tape s , ça donnera le s se trouve à chaine[0]
Et puis franchement, pour des fonctions aussi simple que celle là, je préfère y coder à la main.
Est-ce que au moins tu as cliqué sur le lien ? Il y a un exemple qui montre comment obtenir la position d'une lettre à partir de cette fonction. Savais-tu que les chaînes de caractères étaient représentées par l'adresse de leur première case ?
Est-ce que au moins tu as cliqué sur le lien ? Il y a un exemple qui montre comment obtenir la position d'une lettre à partir de cette fonction. Savais-tu que les chaînes de caractères étaient représentées par l'adresse de leur première case ?
J'espère ne pas "merder" en déterrant ce POST mais je suis tombé dessus et j'avais besoin de rechercher la position d'un dernier caractère précis dans une chaine de caractère et j'ai vu qu'une fonction avait été proposée alors qu’apparemment (si je ne trompe pas) le code ci-dessous fonctionne pas mal (merci d'être tolérant je re-débute en C )
// Chaine à Traiter
char *chaineComplete = "Je cherche lA position du dernier A dans cette phrAse";
// Détermination Position Premier A
int positionPremier = strlen(chaineComplete) - strlen(strchr(chaineComplete, 'A'));
// Détermination Position Dernier A
int positionDernier = strlen(chaineComplete) - strlen(strrchr(chaineComplete, 'A'));
printf("\n\nPosition Premier : %d", positionPremier);
printf("\n\nPosition Dernier : %d", positionDernier);
Avec un code qui tient en une ligne pour trouver ou le premier ou le dernier caractère dans la chaine.
- Edité par Juanito de Dironne 24 octobre 2019 à 12:43:24
Heureux les fêlés car ils laissent passer la lumière...
Retourner la position d'un caractére dans une chaine
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Heureux les fêlés car ils laissent passer la lumière...