-1
votes

Renvoyer un pointeur en C, trouvez la valeur dans la chaîne

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

c

6 commentaires

Quel type revenez-vous? Quel type êtes-vous censé revenir?


Recherche la chaîne d'entrée str pour la première instance du caractère C (un caractère non signé). Cette fonction renvoie un pointeur qui pointe vers la première instance du caractère C dans la chaîne d'entrée str .


retourne un pointeur qui pointe vers la première instance ... - Pourquoi pensez-vous str [x] 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 en commençant par le caractère trouvé.


Qu'est-ce que recherche_char renvoie: le caractère trouvé ou la position 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 déclaration .


3 Réponses :


1
votes

str [x] est un char (spécifiquement, il s'agit d'un objet de char type).

& str [x] est un pointeur sur char , également appelé un char * . .

Votre fonction est déclarée pour renvoyer char * . Donc, renvoyez un pointeur sur le char .


2 commentaires

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 de l'OP doit également être corrigé.



0
votes

Vous devez retourner un pointeur à la chaîne que vous avez trouvée xxx

doit être xxx

notez que la fonction est identique au Standard strchr fonction http: // mans. org / linux / man-pages / man3 / strchr.3.html


0 commentaires

0
votes

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 retour STR [x]; code>, renvoyer un pointeur sur un caractère à l'aide de retour & str [x]; code>. p>

Il y a aussi une solution de contournement. P>

Vous pouvez déclarer votre fonction Comme p>

char Find_char () {...} code> p>

au lieu de p>

Char * Find_char () {. ..} code>. p>

modifie également votre printf () code> instruction. p>

Voici les modifications que j'ai faites: 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];
    }
  }
 }


0 commentaires