RSsakatauskas Postado Janeiro 5, 2016 Denunciar Share Postado Janeiro 5, 2016 Estou fazendo um exercício de implementar a função strrchr usando ponteiros e aparentemente parece que ia funcionar: char *strrch(char *string,char ch) { char *aux = string; while(*string++); while(*string-- != ch) || string != aux); if(*string == ch)return string; return NULL; } Mas acaba aparecendo segmentation fault; Alguém poderia me ajudar? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Janeiro 5, 2016 Denunciar Share Postado Janeiro 5, 2016 pode ser por causa de que você esta pondo ponto e virgula depois de while.... "while(*string++);<--AQUI!!", e nos ifs, etc. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Agosto 2, 2018 Denunciar Share Postado Agosto 2, 2018 Esse seria o código completo da função strrchr: /* Copyright (C) 1991-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ #include <string.h> #undef strrchr #ifndef STRRCHR # define STRRCHR strrchr #endif /* Find the last occurrence of C in S. */ char * STRRCHR (const char *s, int c) { const char *found, *p; c = (unsigned char) c; /* Since strchr is fast, we use it rather than the obvious loop. */ if (c == '\0') return strchr (s, '\0'); found = NULL; while ((p = strchr (s, c)) != NULL) { found = p; s = p + 1; } return (char *) found; } #ifdef weak_alias #undef rindex weak_alias (strrchr, rindex) #endif libc_hidden_builtin_def (strrchr) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
RSsakatauskas
Estou fazendo um exercício de implementar a função strrchr usando ponteiros e aparentemente parece que ia funcionar:
char *strrch(char *string,char ch)
{
char *aux = string;
while(*string++);
while(*string-- != ch) || string != aux);
if(*string == ch)return string;
return NULL;
}
Mas acaba aparecendo segmentation fault;
Alguém poderia me ajudar?
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.