Ir para conteúdo

POWERED BY:

Arquivado

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

viciado

[Resolvido] Erro Ponteiro

Recommended Posts

Fiz um programinha para retornar o endereço da última ocorrência de ch na string, está dando erro "conflicting type"

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *strrchr(char *str, char ch){
     char *ptr = str + strlen(str) - 1;
     while(ptr>=str){
                   if(*ptr == ch)
                        return ptr;
                   else ptr--;
                   }
     return NULL;
} 
int main()
{
  char s[30], ch;
  printf("String: \n"); gets(s);
  printf("Caracter: \n"); scanf("%c",&ch);
  printf("%d",strrchr(s,ch)); 
  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brother, essa função strrchr já existe na string.h:

 

_CRTIMP char* __cdecl	strrchr (const char*, int)  __MINGW_ATTRIB_PURE;

Por isso esta dando esse erro. Renomeando a sua função você resolve esse problema.

 

Lembrando que sua função retorna um endereço de memoria, logo, o seu

printf("%d",strrchr(s,ch));
vai imprimir uma coisa meio ilegivel... xD

 

Fiz um programinha para retornar o endereço da última ocorrência de ch na string, está dando erro "conflicting type"

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *strrchr(char *str, char ch){
     char *ptr = str + strlen(str) - 1;
     while(ptr>=str){
                   if(*ptr == ch)
                        return ptr;
                   else ptr--;
                   }
     return NULL;
} 
int main()
{
  char s[30], ch;
  printf("String: \n"); gets(s);
  printf("Caracter: \n"); scanf("%c",&ch);
  printf("%d",strrchr(s,ch)); 
  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na realidade esse função retorna um PONTEIRO e você está imprimindo um INT... esse é o "conflicting type error"

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado. Se um dia alguém quiser olhar o código

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *strrch(char *str, char ch){
     char *ptr = str + strlen(str) - 1;
     while(ptr>=str){
                   if(*ptr == ch)
                        return ptr;
                   else ptr--;
                   }
     return NULL;
} 
int main()
{
  char s[30], ch;
  printf("String: \n"); gets(s);
  printf("Caracter: \n"); scanf("%c",&ch);
  printf("%p",strrch(s,ch)); 
  system("PAUSE");      
  return 0;
}

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.