Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Mkman

Exercicio de Ponteiros

Mensagens Recomendadas

Mkman

Ola,tenho aqui uma duvida no seguinte exercicio: Faça um,função que devolve o endereço da ultima ocorrência do caracter ch(que será introduzido pelo utilizador) em em s(e um vector), caso não exista que devolve NULL.Escreva ainda um programa que solicite uma nome completo e escreva no cera apenas o apelido. Eu consegui fazer este código, mas não me esta a compilar, por isso não sei se e por um erro lógico ou mesmo de programação.

#include<stdio.h>
#include<string.h>
char *str(char *s, char ch)          /* Esta funçao vai verificar se um determinado caracter esta na funçao, se estiver ela retornara o seu endereço se nao retonara NULL */
{
int i;
char * ola;
for(i=(strlen(s)-1);i>0;i--)
	if(s[i]==ch)
		return *ola[i];
return NULL;
}

char apelidos(char *nome,char *apelido) /* Esta funçao tem por funçao copiar o apelido do vector nome para o vector apelido */
{
int i;
int j=0;
for(i=(strlen(nome)-1);i>0;i--)
	if(nome[i]==' ')
		{
			for(;i<strlen(nome);i++)
				nome[i]==apelido[j];
				j++;
			return apelido;
		}

}

main()
{
char ch;
char nome[100];
char string[100];
char apelido[100];
printf("Intruduza a string\n:"); fgets(string,100,stdin);
printf("Intruduza o caracter a procurar:\n"); scanf("%c",&ch);
printf("Intruduza o seu nome completo:\n"); fgets(nome,100,stdin);
printf("\t\t\t##########################\n");
printf("\t\t\t##########################\n");
printf("O ultimo adereço em que o caracter foi encontrado e o %d\n",str(string,ch));
printf("O seu apelido e o %s\n",apelidos(nome));
}

                                                                                                                                                Desde já agradeço pela ajuda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

Na função str estás a fazer return *ola, mas isso está mal. Primeiro porque o que tu queres é devolver o endereço do último caracter igual a ch e não um apontador para o mesmo. Portanto, o operador a utilizar será o & e não o *. Segundo, porque o ola não está ali a fazer nada, o que tens de fazer é devolver o endereço de uma posição do vector s:

return &s[i];

Na função apelidos, estás a indicar que o tipo de retorno é um char quando na verdade é char * porque estás a devolver a string apelido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Mkman

Ok obrigado, mas tenho aqui outro problema, com as tuas repostas o meu programa já compila, mas só que me esta a dar o seguinte output:

Introduza a string

:tiago

Introduza o caracter a procurar:

o

Introduza o seu nome completo:

##########################

##########################

O ultimo adereço em que o caracter foi encontrado e o -1080772581

O seu apelido e o (null)

Esta a passar a frente a introdução do nome

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.