Probleme erreur
Résolu
anthony
-
anthony -
anthony -
Bonjour,
voia je suis en train d'essayer de reproduire une fonction qui s'apelle strchr en C
voila le code:
mais j'ai une erreur que je ne comprend pas
la voici:
et il voici ce qu'il m'affiche dans ma console:
sur ma console les caractere s'affiche differement sa m'affiche pas ce genre de truc ;� mais sa m'affiche des point d'interrogation entourer par un rond blanc alors que sa devrait afficher ma chaine
voia je suis en train d'essayer de reproduire une fonction qui s'apelle strchr en C
voila le code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* rechercheCaractere(const char* chaine, int caractereARechercher);
int main(int argc, char *argv[])
{
char lettre[100] = "Salut je suis anthony", *fonction = NULL;
fonction = rechercheCaractere(lettre, 'j');
if(fonction != NULL)
{
printf("voici la fin du texte de la premiere lettre rechercher\n %s\n", fonction);
}
else
{
printf("dsl le caractere rechercher est inexistant \n");
}
return 0;
}
char* rechercheCaractere(const char* chaine, int caractereARechercher)
{
int i;
for(i = 0; caractereARechercher != chaine[i]; i++)
{
if(caractereARechercher == chaine[i])
{
return (char*) chaine;
}
else if (chaine[i] == '\0')
{
return NULL;
}
}
}
mais j'ai une erreur que je ne comprend pas
la voici:
/home/user/projet/main.c||In function ‘rechercheCaractere’:| /home/user/projet/main.c|42|attention : control reaches end of non-void function| ||=== Build finished: 1 errors, 0 warnings ===|
et il voici ce qu'il m'affiche dans ma console:
[user@guillemot Debug]$ ./projet voici la fin du texte de la premiere lettre rechercher H:����з�\�� �H:����з [user@guillemot Debug]$
sur ma console les caractere s'affiche differement sa m'affiche pas ce genre de truc ;� mais sa m'affiche des point d'interrogation entourer par un rond blanc alors que sa devrait afficher ma chaine
A voir également:
- Probleme erreur
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
8 réponses
oui mais si je met un else je doit mettre quoi a l'interieur de else je ne vais pas mettre un return NULL je l'ai deja mit dans le else if sa n'a aucune utilitée
J'ai compris ce que tu as voulu faire, mais ce n'étais pas très propre...
char* rechercheCaractere(const char* chaine, int caractereARechercher)
{
int i;
for (i=0; chaine[i] != '\0'; i++)
{
if (chaine[i] == caractereARechercher)
return (char*) chaine; // es-tu sûr que ce soit chaine ici ?
}
return NULL; // dans le cas où le caractère n'apparaisse jamais
}
ben en faite moi j'ai un doute je crois que je doit retourner chaine[i] mais dans le prototype il dise qu'on doit retourner une pointeur et un gars ma dit que chaine est un pointeur alors que chaine[i] n'est pas un pointeur donc je retourne chaine je vois ce ue je doit retourner d'autre
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Même si ça peut paraître étrange, tu peux retourner un pointeur sur un caractère.
Ça te permet de savoir où est situé ce caractère en mémoire, et d'afficher tous les caractères qui suivent...
En réalité chaine pointe sur chaine[0], donc tu peux faire revenir le pointeur de chaine[i] en utilisant chaine+i.
Remarque : chaine étant déclaré constante tu devras encore utiliser (char*)
Ainsi avec return (char*) chaine+i; tu obtiendras "je suis Anthony".
Ça te permet de savoir où est situé ce caractère en mémoire, et d'afficher tous les caractères qui suivent...
En réalité chaine pointe sur chaine[0], donc tu peux faire revenir le pointeur de chaine[i] en utilisant chaine+i.
Remarque : chaine étant déclaré constante tu devras encore utiliser (char*)
Ainsi avec return (char*) chaine+i; tu obtiendras "je suis Anthony".