viciado 1 Denunciar post Postado Janeiro 19, 2010 Função que retorna oendereço da última ocorrência de ch em s O programa não funciona diz que tendo conflitos na função strrchr e na linha 18 tipos incompativeis. Não sei o que está errado #include <stdio.h> #include <stdlib.h> char *strrchr(char *s, char ch){ int i; char *ptr = NULL; for(i=0;s[i]!='\0';i++){ if(s[i] == ch) ptr = &s[i]; } return ptr; } int main() { char *s = "Prog teste"; char ch = 't'; strrchr(&s,ch); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Janeiro 19, 2010 O programa não funciona diz que tendo conflitos na função strrchr e na linha 18 tipos incompativeis.A função 'strrchr' já existe, e você está redefinindo ela, por isso o conflito. Use outro nome.Na linha 18, você passa como parametros '&s' e 'ch', mas 's' já é do tipo char*, '&s' é do tipo char**, mas a função espera um char* Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Janeiro 19, 2010 O programa não funciona diz que tendo conflitos na função strrchr e na linha 18 tipos incompativeis.A função 'strrchr' já existe, e você está redefinindo ela, por isso o conflito. Use outro nome.Na linha 18, você passa como parametros '&s' e 'ch', mas 's' já é do tipo char*, '&s' é do tipo char**, mas a função espera um char* Obrigado está funcionando. Estou recebendo um warning conflito de tipos na função strchr #include <stdio.h> #include <stdlib.h> char *strchr(char *s, char ch){ int i; char *ptr = NULL; for(i=0;s[i]!='\0';i++){ if(s[i] == ch) ptr = &s[i]; } return ptr; } int main() { char *s = "Prog teste"; char ch = 's'; printf("%p \n",strchr(s,ch)); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Janeiro 19, 2010 Pois é... strchr também existe. Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Janeiro 19, 2010 Pois é... strchr também existe. Obrigado. Tentei fazer um em que a string origem no inicio da destino O programa não da erro mais o PC avisa q não pode acessar tal endereço da memória #include <stdio.h> #include <stdlib.h> #include <string.h> char *str(char* dest, char* orig){ int tam = strlen(dest); int i,j; char *ptr = NULL; for(j=0;orig[j]!='\0';j++) ptr[j] = orig[j]; for(i=0;i<tam-1;i++) ptr[j+i] = dest[i]; return ptr; } int main() { char *s = "Programa"; char *s2 = "Teste"; printf("%p \n",str(s,s2)); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Janeiro 20, 2010 Você não alocou memória para 'ptr'. Note que apenas inicializou ele como NULL, na linha 8. Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Janeiro 20, 2010 Você não alocou memória para 'ptr'. Note que apenas inicializou ele como NULL, na linha 8. A sim. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites