Foros del Web » Programación para mayores de 30 ;) » Programación General »

Lenguaje C, ayuda con un puntero.

Estas en el tema de Lenguaje C, ayuda con un puntero. en el foro de Programación General en Foros del Web. Buenas tardes a todos, Foreros !!! Quiero reservar X (Dependiendo de un param) espacios de memoria e inicializarlos a "_", y despues con un puntero ...
  #1 (permalink)  
Antiguo 30/12/2004, 09:15
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Lenguaje C, ayuda con un puntero.

Buenas tardes a todos, Foreros !!!

Quiero reservar X (Dependiendo de un param) espacios de memoria e inicializarlos a "_", y despues con un puntero que apunte a ese array, modificar una posición.

Para ello he hecho lo siguienete:

char *columnas, arr[ (int)(argv[1]) ];
int tamano, m;

for(m=0; m<(int)*argv[1]; m++){
arr[m]=(char)"_";
}
tamano=strlen(arr); //Quiero almacenar aqui el tamaño de la matriz
//printf("%i", tamano);

//Le digo al puntero que reserve esa memoria
columnas=(char)malloc((tamano-1)sizeof(char));

Esto en principio debería estar bien, ¿VerdaD?

Meda el siguiente error: error de decodificación antes de sizeof.



Y si pongo eso entre comentarios, también me da error al ejecutar en la linea:
arr[m]=(char)"_";

Me dice: Violación del segmento.


Bueno, se que pregunto mucho, pero es que por más que me peleo no soy quién a sacar el fallo (Y TAMBIÉN MIRO POR INTERNET, pero claro, estos fallos para encontrarlos . . . .).

En fin, si alguien puede hecharme una mano le estaría muy agradecido.

De todas formas, desde ya, gracias por la ayuda que siempre brinda la gente en este foro.

Saludos.

P.d.: A ti tb Eternal_Idol, nun te me alteres. XD
__________________
Charlie.
  #2 (permalink)  
Antiguo 30/12/2004, 10:20
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
intenta poner esto:
columnas=(*char)malloc((tamano-1)*sizeof(char));

Es probable que mejore.

Saludos
  #3 (permalink)  
Antiguo 26/04/2010, 10:32
 
Fecha de Ingreso: julio-2007
Mensajes: 4
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Lenguaje C, ayuda con un puntero.

Faciiilll, tu error es de teoria, asumo que estas programando en plataforma dos, ya que te da este error de violacion de segmento, solo te estas pasando del primer segmento de memoria que dos tiene resesvado para el usuario, y estamos hablando de 16 bits, o sea 2 bytes, cuya posicion de memoria maxima para el primer segmento es en hexa FFFF, solo coloca un if para que mo se pase de ese segmento y yataaaaaa, no te da mas la falla.
  #4 (permalink)  
Antiguo 27/05/2010, 19:09
Avatar de donyoyo  
Fecha de Ingreso: mayo-2010
Ubicación: Chile
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
Respuesta: Lenguaje C, ayuda con un puntero.

estimado, prueba haciendo lo siguiente:
cambia: char *columnas, arr[ (int)(argv[1]) ];
a por: char *columnas, *arr; //defino punteros, y después asigno espacio al arreglo

agrega, antes del bucle for lo siguiente:
arr=(char*)realloc(arr,sizeof(char)*atoi(argv[1]));

y luego
cambia: arr[m]=(char)"_";
a por: arr[m]=(char)'_'; // si, comillas simples

no alcanzo a ver para que sirve la variable "columnas", pero bueno, cuentas como te va.
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:37.