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

Quetzalma

Definir tamanho de Array

18 mensagens neste tópico

Boas

Eu tou a iniciar-me em C++ e deparei-me com um problema:

Eu quero que o utilizador insira uma frase e para isso sei que o tenho que atribuir a um array de chars(gets), mas eu queria saber se existirá alguma maneira para saber quantos caracteres o utilizador escreveu e definir o array com esse tamanho para assim poupar espaço na memória que pode nunca ver a ser usado.

Espero que tenha sido explicito no que pretendia perguntar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se é bem isto que queres mas existe uma função que retorna o tamanho da string..

#include <string.h>

strlen(string)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado por me lembrares disso xD

já não me lembrava, mas mesmo assim ainda falta saber como definir o tamanho de um array

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois isso já não sei.. como nao sou nenhum expert nisto..

Mas, por exemplo, no mysql há um tipo de dados que é o varchar que se ajusta ao que o utilizador digita...

Não sei se em C++ há disso.. penso que nao..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque não usar o tipo String  ? Não precisas de memorizar num array de char's memorizas numa string, realmente uma string não é mais que um char *  mas assim não necessitas de te preocupar com o parâmetro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existe o tipo string em C??

Pensava que as strings tinham que ser sempre arrays de caracteres...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu tambem acho que sim, acho que o tipo string não existe em C++, mas posso tar errado.

enfim o meu objectivo é o seguinte:

o utilizador insere uma frase

depois insere uma palavra

e ele procura na frase a posição dessa palavra

se existir devolve a posição da 1ª letra

se não existir, diz ao utilizador que não encontrou

para isto tou a usar 2 fors encadeados e mais uns ifs e outras coisas, mas simplesmente gostava de saber como definir o tamanho de um array já depois do programa ter começado a correr

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu tambem acho que sim, acho que o tipo string não existe em C++, mas posso tar errado.

enfim o meu objectivo é o seguinte:

o utilizador insere uma frase

depois insere uma palavra

e ele procura na frase a posição dessa palavra

se existir devolve a posição da 1ª letra

se não existir, diz ao utilizador que não encontrou

para isto tou a usar 2 fors encadeados e mais uns ifs e outras coisas, mas simplesmente gostava de saber como definir o tamanho de um array já depois do programa ter começado a correr

definir o tamanho de um array em tempo de execucao e facil so temos de usar malloc (eu penso que se pode utilizar malloc's em c++ mas nao tenho a certeza ja que o cplusplus foi um plus plus ao c :) )

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

seria possivel reproduzires o erro e colocares aqui.

ja faz algum tempo que nao mexo com c++ mas acho que ainda me lembro de algumas coisas se me puderes mostrar um pouco do codigo ou do erro talvez tenha uma nocao do que se possas estar a fazer mal.

Nuno Martins

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

agora já é tarde e vou-me deitar, mas amanha logo ponho aqui isso

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epá... é C++ quase de certeza que estas a usar STL, se não estas é aconselhavel.

Exemplo relampago:

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

int main(void){
  string xpto;
  cin>>xpto;
  cout<<xpto;

  return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim penso que e possivel usar o malloc, provavelmente devemos conseguir aceder a esta funcao atraves do header cstdlib.

outra maneira possivel e

char *s=new char[n]; // sendo n o numero de posicoes que queras colocar no teu array de char's.

nao testei nada disto mas penso que era assim que eu fazia quando andei a mexer em c++

boas programacoes.

ps. quando ja nao necessitares da memoria nao te esquecas de fazer free ou de fazeres um delete [].

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O free utiliza-se para libertar memória alocada pelo malloc (e afins); o delete utiliza-se para libertar memória alocada pelo new. Não misturem, não é opcional.

eu tambem acho que sim, acho que o tipo string não existe em C++, mas posso tar errado.

O tipo string existe em C++ através da Standard Templates Library. Quem te disse que o tipo string não existe em C++ não te enganou, de facto não existe um tipo string intrínseco à linguagem. Mas em STL está definido o tipo string.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O free utiliza-se para libertar memória alocada pelo malloc (e afins); o delete utiliza-se para libertar memória alocada pelo new. Não misturem, não é opcional.

eu tambem acho que sim, acho que o tipo string não existe em C++, mas posso tar errado.

O tipo string existe em C++ através da Standard Templates Library. Quem te disse que o tipo string não existe em C++ não te enganou, de facto não existe um tipo string intrínseco à linguagem. Mas em STL está definido o tipo string.

sim claro esta, apenas disse que com o malloc se deveria fazer free e com o new usar o delete (neste caso o delete [])

cada macaco no seu galho, ou seja c para um lado e c++ para outro, apesar de em c++ se poder usar c, em c nao se pode usar c++ .

boas programacoes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim claro esta, apenas disse que com o malloc se deveria fazer free e com o new usar o delete (neste caso o delete [])

Foi só para clarificar :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o que o Falk0n disse ta bom mas tambem tem as funções de allocação de memoria!

calloc()

malloc()

free()

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