Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda de programacion en C

Estas en el tema de Duda de programacion en C en el foro de C/C++ en Foros del Web. hola tengo una duda en programacion en c Ya llevo vario tiempo programando en java y aunque digan que son casi iguales no es asi ...
  #1 (permalink)  
Antiguo 07/04/2008, 13:19
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años
Puntos: 2
Duda de programacion en C

hola tengo una duda en programacion en c
Ya llevo vario tiempo programando en java y aunque digan que son casi iguales no es asi
Por ejemplo en java hay un tipo de dato String ,mientra que en C ,el String representaria una cadena de caracteres (char [] cadena)
ahora mi pregunta es,programando en c
cuando ingreso por teclado un string es obvio q lo almacene en una cadena de caracteres
algo asi:

Cita:
char [] palabra;
scanf("%s",palabra);
pero como hago para crear la variable cadena sin darle un tamaño especifico?
porque no puedo saber cual sera el tamaño que se ingrese por teclado
el codigo q les puse arriba da un error ,porq no se indica el tamaño del array
alguna ayuda?
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #2 (permalink)  
Antiguo 07/04/2008, 13:32
Avatar de Laika6  
Fecha de Ingreso: marzo-2008
Mensajes: 41
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Duda de programacion en C

Opino que le pongas una extensión grande, no se...100 por ejemplo. No tienes que poner exactamente el tamaño de la cadena que va a ingresarse, así que coloca algo en lo que pueda caber la cadena que se ingrese... eso no te genera ningún problema y sí muchos beneficios.

Saludos!
  #3 (permalink)  
Antiguo 07/04/2008, 13:42
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años
Puntos: 2
Re: Duda de programacion en C

Laika6 gracias por la respuesta,tb se me ocurrio eso ,pero hay un problema,no debo desperdiciar memoria ,si hago eso, es probable que me den mas memoria de la que necesito y eso no es bueno,hay alguna funcion o algo?
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #4 (permalink)  
Antiguo 08/04/2008, 04:07
 
Fecha de Ingreso: abril-2008
Mensajes: 3
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Duda de programacion en C

Tienes que definir un vector dinámico. En esta web está todo muy bien explicado: http://www.conclase.net/c/curso/index.php?cap=017

Saludos.
  #5 (permalink)  
Antiguo 08/04/2008, 10:28
Avatar de Laika6  
Fecha de Ingreso: marzo-2008
Mensajes: 41
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Duda de programacion en C

Perseus tiene razón, podrías definir un valor dinámico, con una variable... 'n' por ejemplo, y cuando ingrese el texto el usuario, aplicar alguna funcion para definir su longitud y a partir de eso dar el valor a 'n'

Saludos!!!
  #6 (permalink)  
Antiguo 08/04/2008, 12:15
 
Fecha de Ingreso: abril-2008
Mensajes: 3
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Duda de programacion en C

En el enlace que he puesto hay ejemplos, lo que pasa es que no me dejan hacer enlaces aun, pro es asi de sencillo:

#include <iostream>
using namespace std;

int main() {
int **tabla;
int n = 134;
int m = 231;
int i;

// Array de punteros a int:
tabla = new int*[n];
// n arrays de m ints
for(i = 0; i < n; i++)
tabla[i] = new int[m];
tabla[21][33] = 123;
cout << tabla[21][33] << endl;
// Liberar memoria:
for(i = 0; i < n; i++) delete[] tabla[i];
delete[] tabla;

cin.get();
return 0;
}

Saludos.
  #7 (permalink)  
Antiguo 12/04/2008, 17:36
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años
Puntos: 2
Re: Duda de programacion en C

en tu ejemplo hay una linea q creo q esta mal
cin.get();

que variable es cin?
para que liberar la memoria?
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #8 (permalink)  
Antiguo 13/04/2008, 04:57
 
Fecha de Ingreso: abril-2008
Mensajes: 3
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Duda de programacion en C

cin es un objeto definido en la libreria iostream, igual que cout. cin representa un flujo de entrada desde el teclado y cout es un flujo de salida hacia la pantalla (cin lee caracteres de teclado y cout muestra cosas por pantalla) La linea cin.get() solo sirve para parar el programa hasta que se pulse intro.
En c/c++ cuando defines una estructura dinamica tienes que ir reservando memoria para la estructura segun la vas necesitando. Cuando termina la ejecucion del programa tienes que liberar el espacio que usaba la estructura dinamica, xq si no la liberas ningun otro programa podria usar dicha memoria hasta que reiniciaras el ordenador (al menos eso tengo entendido)
En java creo que no hace falta liberar memoria xq la propia maquina virtual lo hace automaticamente.
Para reservar memoria se hace con new y se libera con delete.
  #9 (permalink)  
Antiguo 18/12/2009, 03:17
 
Fecha de Ingreso: diciembre-2009
Mensajes: 1
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Duda de programacion en C

Hay otra forma de utilizar todo lo q dices.
Y eso se logra utilizando la libreria stdlib.Creo q con las funciones malloc y realloc te resulta mas facil si tenes bien en claro como funcionan los punteros en C.
Es mas;con la funcion malloc se puede pedir memoria (si esta dispoible) y no se tiene q pedir para un tipo de datos especificos porq se puede declarar un puntero tipo void.
Trata de verlo mejor con estas dos librerias q te digo.Es mas versatil.
Disculpen q sea un entrometido.
Suertes..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 05:11.