J'essaie d'apprendre C. J'ai un problème qui me demande de boucler à travers une chaîne, de trouver une valeur et de le retourner.
warning:returning 'char' from a function with return type 'char *' makes pointer from integer without a cast
3 Réponses :
Votre fonction est déclarée pour renvoyer str [x] code> est un char code> (spécifiquement, il s'agit d'un objet de char code> type). P>
& str [x] code> est un pointeur sur char code>, également appelé un char * code>. p>.
char * code>. Donc, renvoyez un pointeur sur le char code>. P>
Veuillez noter que même avec cela correctement le cas lorsque le personnage n'est pas trouvé n'est manipulé correctement.
De plus, le printf code> de l'OP doit également être corrigé.
Vous devez retourner un pointeur à la chaîne que vous avez trouvée doit être p> notez que la fonction est identique au Standard strchr code> fonction http: // mans. org / linux / man-pages / man3 / strchr.3.html p> p>
Apprendre et comprendre à partir de ce que l'erreur est. Il est indiqué que votre retour d'un char, mais votre fonction est définie pour renvoyer le pointeur à un char (char em>) * fort> au lieu de Il y a aussi une solution de contournement. P> Vous pouvez déclarer votre fonction Comme p> au lieu de p> modifie également votre Voici les modifications que j'ai faites: P> retour STR [x]; code>, renvoyer un pointeur sur un caractère à l'aide de retour & str [x]; code>. p> char Find_char () {...} code> p> Char * Find_char () {. ..} code>. p> printf () code> instruction. p> int main(void)
{
char *hello = "Hello";
char found_char = find_char(hello, 'e');
printf("Found char: %s\n", found_char);
}
char find_char(char *str, int c)
{
int x;
for (x = 0; str[x] != 0; x++){
if (c == str[x]){
return str[x];
}
}
}
Quel type revenez-vous? Quel type êtes-vous censé revenir?
Recherche la chaîne d'entrée
str code> pour la première instance du caractèreC code> (un caractère non signé). Cette fonction renvoie un pointeur qui pointe vers la première instance du caractèreC code> dans la chaîne d'entréestr code>.retourne un pointeur qui pointe vers la première instance ... i> - Pourquoi pensez-vous
str [x] code> est un pointeur? Ce n'est pas.Remarque, que même si vous corrigez la fonction suggérée, il va imprimer la chaîne entière i> en commençant par le caractère trouvé.
Qu'est-ce que
recherche_char code> renvoie: le caractère trouvé ou la position b> de ce caractère de la chaîne?Lorsque vous résolvez le problème de votre question, vous devez également résoudre le problème de ce à retourner lorsque la valeur n'est pas trouvée. Votre code actuel tombe simplement sur la fin de la fonction sans référence code> déclaration code>.