ville Posted June 22, 2008 at 04:17 PM Report Share #192845 Posted June 22, 2008 at 04:17 PM 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? Link to comment Share on other sites More sharing options...
TheDark Posted June 22, 2008 at 04:25 PM Report Share #192848 Posted June 22, 2008 at 04:25 PM 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. Desaparecido. Link to comment Share on other sites More sharing options...
Baderous Posted June 22, 2008 at 04:30 PM Report Share #192852 Posted June 22, 2008 at 04:30 PM 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; } Link to comment Share on other sites More sharing options...
TheDark Posted June 22, 2008 at 04:44 PM Report Share #192856 Posted June 22, 2008 at 04:44 PM 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. Desaparecido. Link to comment Share on other sites More sharing options...
ville Posted June 22, 2008 at 04:56 PM Author Report Share #192859 Posted June 22, 2008 at 04:56 PM 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. Link to comment Share on other sites More sharing options...
Baderous Posted June 22, 2008 at 04:59 PM Report Share #192861 Posted June 22, 2008 at 04:59 PM 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. Link to comment Share on other sites More sharing options...
ville Posted June 22, 2008 at 05:06 PM Author Report Share #192864 Posted June 22, 2008 at 05:06 PM #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 😛 cenas.c: In function ‘retirabase’: cenas.c:8: warning: return makes integer from pointer without a cast Link to comment Share on other sites More sharing options...
Baderous Posted June 22, 2008 at 05:11 PM Report Share #192866 Posted June 22, 2008 at 05:11 PM 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 * Link to comment Share on other sites More sharing options...
TheDark Posted June 22, 2008 at 05:13 PM Report Share #192867 Posted June 22, 2008 at 05:13 PM Repara no tipo de retorno da tua função (char) e na que o Baderous deu (char *). (O Baderous foi mais rápido 😛 ) 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. Desaparecido. Link to comment Share on other sites More sharing options...
ville Posted June 22, 2008 at 05:18 PM Author Report Share #192868 Posted June 22, 2008 at 05:18 PM tss... voces é que teem traquejo para a coisa... eu por mim continuava um dia a tentar muito obrigado aos dois pela ajuda. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now