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

escribir en la primera posiciòn de un arreglo de char

Estas en el tema de escribir en la primera posiciòn de un arreglo de char en el foro de C/C++ en Foros del Web. Tengo un pequeño problema con el tipo char* Para comenzar, estoy creando una cadena de char. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original char * cadena ...
  #1 (permalink)  
Antiguo 07/08/2010, 20:42
 
Fecha de Ingreso: abril-2010
Mensajes: 31
Antigüedad: 14 años
Puntos: 1
escribir en la primera posiciòn de un arreglo de char

Tengo un pequeño problema con el tipo char*

Para comenzar, estoy creando una cadena de char.

Código C:
Ver original
  1. char * cadena=(char *)malloc(tamano);
//Donde tamano es la cantidad de bytes que el usuario pide.

ahora, tengo que escribir fragmentos de texto en esa cadena, en diferentes posiciones.

Pongamos este caso, el usuario pide 100 como tamano. Creo la memoria total con un tamaño de 100.

El usuario pide que escriba 20 veces la letra a, escribo desde la posición 0 a la 19 del arreglo, la letra a.

El usuario pide que escriba 15 veces la letra d, escribo desde la posición 20 a la 34 del arreglo, la letra d.

El usuario pide que escriba 10 veces la letra j, escribo desde la posición 35 a la 44 del arreglo, la letra j.

El usuario pide que imprima la memoria. Imprimo:
aaaaaaaaaaaaaaaaaaaadddddddddddddddjjjjjjjjjj

El usuario libera la letra a, y tengo y los primeros 20 espacios libres.

El usuario pide que escriba la letra t 12 veces, escribo desde la posición 0 hasta la 11 con la letra t.

El usuario pide que muestre la memoria. Imprimo:

ttttttttttt.

El problema está cuando quiero escribir en la primera posición del arreglo de "memoria", porque cuando escribo en la primera posición, entonces pierdo la referencia a todos los elementos siguientes de arreglo. Es decir, me está creando un arreglo nuevo.

¿Alguna sugerencia para que esto no suceda?


Dejo aquí el código:

Código C:
Ver original
  1. /*escribe el texto <nombre>, desde la posicios <pos>, hasta la
  2. posición <pos + mem> en la memoria simulada. */
  3. int escribir(char *nombre, int pos, int mem)
  4. {
  5.     int i = 0; 
  6.     for(i; i<mem;)
  7.     {
  8.         int j=0;
  9.         for(j; j<strlen(nombre);j++)
  10.         {
  11.             if(i>=mem)break;   
  12.             strcpy(((char *)&memoria[pos+i]), ((char *)&nombre[j]));
  13.             i++;
  14.         }
  15.        
  16.        
  17.     }
  18. }
  #2 (permalink)  
Antiguo 07/08/2010, 21:01
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: escribir en la primera posiciòn de un arreglo de char

No te esta creando ningun nuevo arreglo.

Cuando dices que imprimes, usas un printf o un cout??

En la segunda impresion no te imprime lo sigueinte porque seguramente el arreglo nombre tiene un fin de cadena (\000) y el strcopy (que a mi entender no lo estas usando bien) te copia este caracter. Por lo que el evento imprimir frena al detectarlo.

El srtcpy copia todo hasta encontrar el caractar, vos pareces que lo usas caracter a caracter, y no tiene sentido eso. Estas copiando mucha veces lo mismo.
  #3 (permalink)  
Antiguo 07/08/2010, 22:36
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años
Puntos: 4
Respuesta: escribir en la primera posiciòn de un arreglo de char

y porque en vez de utilizar strcpy solo pones memoria[pos+i]=nombre[j];
  #4 (permalink)  
Antiguo 09/08/2010, 15:53
 
Fecha de Ingreso: abril-2010
Mensajes: 31
Antigüedad: 14 años
Puntos: 1
Respuesta: escribir en la primera posiciòn de un arreglo de char

ok gracias, si era lo del fin de cadena, ya lo arreglé y me funka perfecto.

Etiquetas: char, escribir, primera, arreglos
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 16:03.