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

iniciante

duvida em apontadores e strings

5 mensagens neste tópico

Boas pessoas, sou novo por aqui. andava a estudar e surgiu uma duvida se calhar um pouco básica mas decidi pedir a vossa ajuda. tenho uma duvida em funções com strings e apontadores..tenho 4 funções para fazer para ver o tamanha da string, comparar, copiar e juntar. tenho aqui um exemplo de código que esta sempre a dar erro...não sou muito com com apontadores...se me poderem ajudar agradeço  :)

main()

  str1 = argv[1];             

  str2 = argv[2];             

 

  // Calcular o comprimento de cada string e imprimir os valores

  size1 = string_size(str1);

  size2 = string_size(str2);

 

  // Comparar as duas strings e indicar se sao iguais ou diferentes

    string_compare(str1, str2);

 

  // Copiar a primeira string para um novo buffer

  string_copy(buffer, str1);

  // Juntar a segunda string ao final da primeira

  string_append(buffer, str2);

 

  funções

int string_size(char *str)

{

  strlen(str);               

  return str;

}

int string_compare(char *s1, char *s2)

{

    if (strcmp(s1,s2)==0)

    {

        return 0; 

    }

    else return -1;

}

char *string_copy(char *dest, char *source)

{

    strcpy(dest,source);

}

char *string_append(char *dest, char *source)

{

    strcat(dest,source);

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse main não tem tipo de retorno, nem argumentos, nem parênteses a delimitar o bloco;

str1, str2, size1 e size2 não têm tipos.

String size está a devolver str (i.e., o argumento) e não o valor que calculaste.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para alem de tudo o que o Ferreira disse também te falta:

* declarar o buffer que usas para ai

* nao sendo causa para o programa nao funcionar, podes sempre por string_copy e string_append a devolver algum valor como disseste nas declarações das funções

* não sei se foi de fazeres paste ou se estás mesmo a tentar meter funções dentro da função main, se for o caso obviamente não podes...

boa-sorte

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu nao pus o codico completo, pus apenas as funções que nao consigo fazer...em cima epanas pus elas a serem as chamadas e em baixo bus as funções para serem completadas...isso nao ta em codigo mesmo so pos o que tinha duvida mas se quixerem eu meto o codigo todo..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

char *string_copy(char *dest, char *source)

{

    strcpy(dest,source);

}

char *string_append(char *dest, char *source)

{

    strcat(dest,source);

}

o tipo de retorno destas funções é um apontador para char, onde é que retornas isso?

para isto funcionar deverias ter :

char *string_copy(char *dest, char *source)

{

    strcpy(dest,source);

    return dest;

}

char *string_append(char *dest, char *source)

{

    strcat(dest,source);

    return dest;

}

...aqui...

int string_size(char *str)

{

  strlen(str);             

  return str;

}

dizes que o tipo de retorno é um inteiro, e estas a devolver um apontador para string, varia mais sentido:

int string_size(char *str)

{

  int i;

  i = strlen(str);             

  return i;

}

...logo no início,

  char * str1;

  char * str2;

  int size1, size2;

  str1 = argv[1];           

  str2 = argv[2];           

  // Calcular o comprimento de cada string e imprimir os valores

  size1 = string_size(str1);

  size2 = string_size(str2);

Acho que isto já te corrige alguns dos erros :)

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