Jump to content

duvida em apontadores e strings


iniciante

Recommended Posts

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);

}

RC

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

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

Link to comment
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
×
×
  • Create New...

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.