Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

viciado

[Resolvido] Ponteiro em c

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.