elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Concatenacion de texto mediante puntero - Problema en: 15 Marzo 2017, 19:27 pm
Hola, como estan? Tengo el siguiente problema. Tengo una funcion que dada dos cadenas, debe de concatenarlas, el problema empieza es que me devuelve cualquier cosa, muchos espacios en blanco.
Código
  1. struct textoenstruct;
  2.  
  3. typedef textoenstruct *puntero_a_struct;
  4.  
  5. struct textoenstruct {
  6.  char caracteres[21];
  7.  nat longitud;
  8. };
  9.  
  10. puntero_a_struct concatenar_texto(puntero_a_struct t1, puntero_a_struct t2) {
  11. puntero_a_struct final = new textoenstruct[strlen(t1 ->caracteres)+strlen(t2 ->caracteres)];
  12. strcat(final->caracteres, t1 ->caracteres);
  13. strcat(final->caracteres, t2 ->caracteres);
  14. /* si es mayor a 20 eliminar todo el resto */
  15. if ((strlen(t1 ->caracteres)+strlen(t2 ->caracteres)) > 20) {
  16.  
  17. for(int i = 20;i <= strlen(final->caracteres);i++) {
  18. final->caracteres[i] = '\0';
  19.  
  20. } }
  21.  
  22. return final;
  23. }
Tengo que hacerla mediante punteros, es un tema que me cuesta mucho(memoria dinamica). Esto es lo que hace la funcion:

Creo "textoenstruct" mediante new, el cual tiene de longitud (strlen(t1 ->caracteres)+strlen(t2 ->caracteres)), ya que los estoy concatenando (Pero tambien concatena el espacio en blanco) lo cual, ahora que lo pienso, contradice el concepto de memoria dinamica
ya que le estoy asignando un tamaño estatico, luego digo que en caso que la longitud del vector sea mayor a 20, coloque todos los caracteres posteriores como "\0" ya que esto seria como que estuvieran borrados cierto?
Entonces tengo un nuevo vector con los primeros 20 elementos del texto concatenado, pero en la practica el resultado es diferente, tiene muchos espacios en blanco

Y con esta linea asi como esta, el programa no compila:
Código
  1. for(int i = 20;i <= strlen(final->caracteres);i++)
  2.  
Nop entiendo cual es el problema de colocar esto asi
2  Programación / Programación C/C++ / Problema al leer desde la bibliteca standar en: 15 Marzo 2017, 19:06 pm
Tengo que crear una funcion que devuelva un texto (Una palabra) leido desde la entrada estandar. Como es una palabra, la funcion lee hasta encontrar un espacio en blanco. Ademas esta la condicion de que la palabra no puede ser mayor a 20.
Tengo que hacerlo mediante punteros y estructuras por eso, lo que hice fue lo siguiente:

Código
  1. struct textoenstruct;
  2.  
  3. typedef textoenstruct *puntero_a_struct;
  4.  
  5. struct textoenstruct {
  6.  char caracteres[21];
  7.  nat longitud;
  8. };
  9.  
  10. puntero_a_struct palabra() {
  11. puntero_a_struct final = new textoenstruct[21];
  12. scanf("%c",final>caracteres);
  13. int i = 0;
  14. while (i != strlen(final->caracteres))
  15. {
  16. if (final->caracteres[i] == "\0")
  17. {
  18. int h = i;
  19. while (h < i)
  20. {
  21. final->caracteres[h] = "\0";
  22. h++;
  23. }
  24. i++;
  25. }
  26. }
  27. return final;
  28. }
  29.  

El problema es que no esta funcionando, y no se estoy haciendo mal, para mi tiene logica, pues, crea "textoenstruct", y al colocar "final->caracteres" en scanf, se coloca ahi la palabra, si se coloca "hola como estas" con el convierte desde la "c" hasta el final de la segunda palabra en "\0", ya que no se pueden achicar vectores la pense asi. Pero sigue sin funcionar
3  Programación / Programación C/C++ / Como redimensionar un vector en: 14 Marzo 2017, 06:58 am
Tengo un vector que de la forma
Código
  1. char h[4] = "hola";
  2.  
yo quiero eliminar todo apartir de la segunda letra para dejar solo "ho", algun consejo sobre como encararlo?
Usando solo stdlib.h, cstring, o cstdio
4  Programación / Programación C/C++ / Para que sirve un puntero a una estructura? en: 13 Marzo 2017, 04:14 am
Haciendo una tarea para la facultad, veo que crean un puntero que esta asignado a la direccion en memoria de una estructura
Código
  1.  
  2. struct fecha {
  3.   int mes;
  4.   int dia;
  5. };
  6.  
  7. main() {
  8.   fecha *fechaPunt;
  9.   fechaPunt = new fecha;
  10.  
  11.   fechaPunt -> mes = 10;
  12.   fechaPunt -> dia = 17;
  13. delete fechaPunt; }
  14.  
  15.  
El problema es que no entiendo porque hacen esto, de que sirve?. No es mejor poner
Código
  1.  
  2. main() {
  3.  
  4. fecha.mes = 10;
  5. fecha.dia = 17;
  6.  
  7. }
  8.  
  9.  
Esto resumiría todas las lineas de codigo del main() anterior en 2. ¿Tiene alguna utilidad el crear un puntero en este ejemplo?
5  Programación / Programación C/C++ / Duda con respecto a puntero a estructura en: 9 Marzo 2017, 05:02 am
Tengo una duda con respecto a la funcion de un puntero en una parte de código (c++):

Código
  1. typedef info *arraytexto;
  2. struct textos {
  3. arraytexto elementos;
  4. nat taminio;
  5. nat elementos;
  6. };
  7.  
  8. int main(){
  9. textos contenido;
  10. contenido.tamanio = 8;
  11. contenido.elementos = new info[entrada.tamanio];
  12. info linea = "hola";
  13.  
  14.  

Por lo que entiendo, esto define el tipo "info" apuntando a arraytexto, el problema es que no entiendo de que sirve hacer esto. despues pone "info linea = "hola";" y "new info[entrada.tamanio];" no entiendo muy bien porque usa el new ahi, ya que solo esta reservando memoria dinamica
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines