Jump to content
M!Gu3L

Funçao Char

Recommended Posts

M!Gu3L

Boas pessoal, como fazer uma funçao que pede uma cadeia de caracteres, guarda num array de char's e retorna esse char.

Ex:

char pedirString()
{
char charArray[20];
cout<<"Introduza uma string: ";
cin>>charArray;

return charArray;
}

Agradecia a ajuda.

Obrigado.

Share this post


Link to post
Share on other sites
Xpirito

Retorna esse char?

Qual char?

Queres que retorne o array de char's completo?

---pseudo-código---

para i igual a 0 ; i maior ou igual que tamanho do array ; i++

imprime array na posição i

---pseudo-código---

Fazes um ciclo em que faça "cout's" dos char do array


Para perguntas idiotas, respostas estúpidas!

Share this post


Link to post
Share on other sites
M!Gu3L

O objectivo e fazer uma funçao que pede ao utilizador uma palavra e devolve-a. Para depois no main() essa palavra ser manipulada, pelas funçoes (Strlen(), strcomp(),...) que apenas aceitam como parametros char's. Ora como e que consigo fazer uma funçao que faça o pretendido?? 😲

Share this post


Link to post
Share on other sites
xtrm0

se incluires a biblioteca stdio.h©;

podes fazer:

char umacstring[20];
scanf("%s", umacstring);
return *umacstring;

Mais vale utilizares a biblioteca string do c++, visto que é para strings que ela serve, e porque é mais facil usa-la com o cin.

Ex:

#include <string>
#include <iostream>
using namespace std;

int main() {
string palavra;
cin >> palavra;
cout << palavra;
return 0;
}


<Signature goes here>

Share this post


Link to post
Share on other sites
M!Gu3L

O problema de nao poder usar como string é o facto de as funçoes (strcat(), strcpy(),...) so aceitarem char's como parametros. A unica possibilidade a usar como string seria converter string para um array de char's.

Isso e possivel?? Se sim, como?  :cheesygrin:

Obrigado.

Share this post


Link to post
Share on other sites
xtrm0

1-Existem funções equivalentes na biblioteca string. Lê: http://www.cplusplus.com/reference/string/string/

Nas strings basta fazeres: string1=string2

E if (string1.compare(string2)!=0) {entao sao diferentes}

2-O primeiro código que eu mandei, utiliza apenas arrays de char's:

char umacstring[20];
scanf("%s", umacstring);
return *umacstring;


<Signature goes here>

Share this post


Link to post
Share on other sites
Devexz

podes fazer assim:

char pedirString()
{

string palavra;

char charArray[20];
cout<<"Introduza uma string: ";
getline(charArray,20);

palavra = (string) charArray;

return palavra;
}

Se puderes usar strings...

cumps.


Ás vezes, mais vale deixar a assinatura em branco.

Share this post


Link to post
Share on other sites
Localhost

@xtrm0: isso que postaste apenas te retorna o primeiro char da string.

Para retornares uma string tens de trabalhar com memória dinâmica, pois ao trabalhares com memória estática corres o risco de estar a aceder a algo onde já não existe string nenhuma.

Resumindo:

* Alocas dinamicamente uma string na tua função (operador new);

* Pedes ao utilizador o input (scanf);

* Retornas o endereço retornado pelo operador new;


here since 2009

Share this post


Link to post
Share on other sites
xtrm0

(Esquecime de meter o &)

Então em vez de fazer isto:

*char f() {
char umacstring[20];
scanf("%s", &umacstring);
return *umacstring;
}

Tenho de fazer isto:

*char f() {
new umacstring = *char;
scanf("%s", &umacstring);
return *umacstring;
}


<Signature goes here>

Share this post


Link to post
Share on other sites
Localhost

Neste caso podíamos fazer:

char *my_string = new char[MAX];

scanf ("%s", my_string);
printf ("%s\n", my_string);

return my_string;

Desta maneira estaríamos a retornar o endereço de um vector que apenas vai ser destruído no final do programa ou quando utilizarmos o operador delete, em vez de ser destruído logo após o término da função.


here since 2009

Share this post


Link to post
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.