Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Mkman

Exercicio de Ponteiros

Recommended Posts

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.