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

ville

Duvida função simples

10 mensagens neste tópico

preciso de algo do genero;

strcpy(cadeia,"ABCDEF");
cadeia2=retirabase(cadeia,num);
printf("%s",cadeia2);

e cadeia2 seria supostamente BCDEF

dps a cadeia3 seria supostamente CDEF, ou seja, uma funçao que retorna a string recebida sem os n primeiros caracteres

aqui esta a minha tentativa desesperada

char retirabase (char *seq,int num){
char aux[1000];
int i;
  for(i=0+num;i<=strlen(seq);i++)
    aux[i-num]=seq[i];
  return *(aux);

}

ainda n consegui perceber pq e que n funciona...mais alguma sugestao?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em primeiríssimo lugar, aux é uma variável local à função, pelo que não é seguro retornar o seu endereço, embora seja possível (e até provável) que funcione.

Depois, devias estar a retornar char * em vez de char.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
char * retirabase(char *seq,int num) {
int j;
int t = strlen(seq);
for (j=num;j<=t;j++)
	seq[j-num]=seq[j];
return seq;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1º, tens que perder a mania de dar o código de bandeja. É uma maneira fácil de "ajudar", mas não é ajuda nenhuma. Lê as regras do fórum e vê o que está lá escrito sobre quem pede para fazerem trabalhos. O que nem foi o caso, o que só torna o que fizeste ainda pior.

2º, isso não serve para o que ele quer porque altera a string original, impedindo de a reutilizar em chamadas subsequentes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1º, tens que perder a mania de dar o código de bandeja. É uma maneira fácil de "ajudar", mas não é ajuda nenhuma. Lê as regras do fórum e vê o que está lá escrito sobre quem pede para fazerem trabalhos. O que nem foi o caso, o que só torna o que fizeste ainda pior.

2º, isso não serve para o que ele quer porque altera a string original, impedindo de a reutilizar em chamadas subsequentes.

1º - Desculpa la mas eu até acho que é bastante didático ver a função já resolvida, nem que seja de outra forma, para ver outras maneiras de programar e pensar.

2º eu postei a minha funçao, o que prova que estou a tentar, não me tomes por igual aos que chegam aqui sem nada e pedem que lhes façam tudo, coisa que alías, não fiz.

voltando ao assunto, sim, realmente não é bem isso que quero, mas obrigado na mesma.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se não serve para o que ele quer, então não dei a solução. Fácil.

E só meti o código porque já tinha reparado que a parte do algoritmo, ele já tinha feito bem.

Mas eu percebi a tua ideia, vou ter mais cuidado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include<stdio.h>
#include<string.h>
char retirabase (char *seq,char *seqb,int num){
int j;
int t = strlen(seq);
for (j=num;j<=t;j++)
	seqb[j-num]=seq[j];
return seqb;
}
int main(void)  
{
  char cadeia[1000];
  char cadeia2[1000];
  int num;
  num=2;
  printf("%s\n",cadeia);
  retirabase(cadeia,cadeia2,num);
  printf("%s\n",cadeia2);
return 0;
}

isto dá-me o mesmo erro que quando postei. Sinto que estou perto :P

cenas.c: In function ‘retirabase’:

cenas.c:8: warning: return makes integer from pointer without a cast

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando fazes return seqb, estás a devolver um apontador para a string seqb. No entanto no cabeçalho da função disseste que o tipo de retorno era char. Ora char != apontador para char (char *). Logo o que tens de fazer é mudar o char para char *

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Repara no tipo de retorno da tua função (char) e na que o Baderous deu (char *). (O Baderous foi mais rápido :P )

E só meti o código porque já tinha reparado que a parte do algoritmo, ele já tinha feito bem.

Mas podias ter explicado as diferenças ente o teu código e o dele. Simples copy-paste é que não o ajuda muito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tss... voces é que teem traquejo para a coisa... eu por mim continuava um dia a tentar :wallbash:

muito obrigado aos dois pela ajuda.

0

Partilhar esta mensagem


Link 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