iniciante Posted September 30, 2009 at 09:10 AM Report Share #289286 Posted September 30, 2009 at 09:10 AM 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 More sharing options...
Ferreira Posted September 30, 2009 at 10:09 AM Report Share #289289 Posted September 30, 2009 at 10:09 AM 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. http://twitter.com/ferreira Link to comment Share on other sites More sharing options...
_7_up_ Posted September 30, 2009 at 10:22 AM Report Share #289293 Posted September 30, 2009 at 10:22 AM 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 More sharing options...
iniciante Posted September 30, 2009 at 10:35 AM Author Report Share #289294 Posted September 30, 2009 at 10:35 AM 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.. RC Link to comment Share on other sites More sharing options...
ricardosil88 Posted September 30, 2009 at 06:32 PM Report Share #289373 Posted September 30, 2009 at 06:32 PM 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 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