Fonction chaine de caractere C
Résolu
jerémiethe7
Messages postés
153
Statut
Membre
-
jerémiethe7 Messages postés 153 Statut Membre -
jerémiethe7 Messages postés 153 Statut Membre -
BONJOUR,
Je ne comprend pas bien pourquoi ma fonction avec une chaine ne fonctionne pas. Je vous montre ce que j'ai écrit dernièrement :
// la déclaration de l afonction :
char recherchenom(char);
// la fonction :
char recherchenom(char nom[])
{
int i,j;
int nombre=0;
for (i = j = 0; nom[i] != '\0'; ++i)
{
if (nom[i] =='<' || nom[i] =='>')
nombre++;
if ((nom[i] >= 65 && nom[i] <= 90 || nom[i]==' ')&&(nombre%2==1))
nom[j++] = nom[i];
}
nom[j] = '\0';
return nom[];
}
// eet puis plus loin dans le programme :
nom[]=recherchenom[](nom[]);
je ne sais pas vraiment si vous avez bien compris mais pour résumer, je pars d'une chaine que j'envoie dans la fonction (qui fait quelques transformations a la chaine) et je renvoie ça dans le programme. Le compilateur me et plusieurs erreurs.
Si quelqu'un pouvais m'aider s'il vous plait.
Merci
Je ne comprend pas bien pourquoi ma fonction avec une chaine ne fonctionne pas. Je vous montre ce que j'ai écrit dernièrement :
// la déclaration de l afonction :
char recherchenom(char);
// la fonction :
char recherchenom(char nom[])
{
int i,j;
int nombre=0;
for (i = j = 0; nom[i] != '\0'; ++i)
{
if (nom[i] =='<' || nom[i] =='>')
nombre++;
if ((nom[i] >= 65 && nom[i] <= 90 || nom[i]==' ')&&(nombre%2==1))
nom[j++] = nom[i];
}
nom[j] = '\0';
return nom[];
}
// eet puis plus loin dans le programme :
nom[]=recherchenom[](nom[]);
je ne sais pas vraiment si vous avez bien compris mais pour résumer, je pars d'une chaine que j'envoie dans la fonction (qui fait quelques transformations a la chaine) et je renvoie ça dans le programme. Le compilateur me et plusieurs erreurs.
Si quelqu'un pouvais m'aider s'il vous plait.
Merci
11 réponses
-
c'est quoi les erreur que te donne le compilateur ?
mais je dirais deja qu'il manque la taille du tableau et ton appel n'est pas correct non plus -
le comiplateur m emet une erreur dans la ligne ou il y a mon return puis 3 erreurs sur la ligne de mon appel de fonction
-
en effet le return c'est comme ça
return nom;
et pour ton appel essaie çanom = recherchenom(nom);
et je pense que si nom est une chaine de caractere ton en-tete devrait plutot ressemblé a çachar *recherchenom(char nom[])
-
ça ne marche pas quand meme car j'ai initialisé la taille de nom par charnom[100] et du coup il me met "incompatibles types in asignment to 'char' to char[100]" et "invalid conversion from 'char*' to 'char'".
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
a quel niveau il te met ça ?
-
dans l'ordre des citations : la 1ère a la ligne de mon return et l'autre sur mon appel
-
c'est bizarre tu as bien changé ton en-tete ?
char *recherchenom(char nom[])
et sinon pour copier la nouvelle chaine a la place de l'ancienne tu peux utiliser la fonction strcpy() comme çastrcpy(recherchenom(nom), nom);
-
ah il n'y a plus qu'une erreur:
sur l'apel de la fonction:
"incompatibles types in asignment to 'char' to char[100]" -
poour l'appel c'est simplement ça vu que tu change nom a l'interieur de ta fonction
recherchenom(nom);
-
Salut,
dans ton premier message je vois char[100] caractere;
ce n'est pas correct, tu devras écrirechar caractere[100];
-
ah oui en effet cela fonctionne. Je n'avait jamais vu un appel de la sorte.
En tout cas merci pour tout mype.
je met ça sur résolu.
++