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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Consutla sobre un problema con punteros y memoria dinamica.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consutla sobre un problema con punteros y memoria dinamica.  (Leído 1,523 veces)
Arturo400

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Consutla sobre un problema con punteros y memoria dinamica.
« en: 22 Septiembre 2016, 22:08 pm »

Hola

Estoy realizando un programa en el cual tengo que leer una frase de un archivo y guardarla en un puntero. Hasta ahi no hay ningun problema. Luego lo que tengo que hacer es seleccionar un entero desde el cual se va a leer la frase y cuantos caracteres quiero leer de esa frase. Lo que queda va a ser guardado en un nuevo puntero que tengo que mostrar por pantalla.

Entonces si tengo la frase

"Universidad de Buenos Aires"

Y leo desde el caracter 4  unos 5 caracteres, en mi nuevo puntero tendria que quedar "ersida".

Hasta ahora he tratado de hacerlo y no le encuentro la forma, cuando intento que lea desde un cierto caracter o no copia nada al nuevo puntero o copia letras que no tendrian que ir.

Les dejo mi codigo para ver si me pueden ayudar para ver en que me estoy equivocando.
El programa se divide en una parte en donde le pido la informacion al archivo y la guardo en un nuevo puntero y la otra parte en donde intento a partir del puntero ya existente, crear otro.

Código
  1. [/#include <stdio.h>
  2. #include <stdlib.h>
  3. char * subcadena (char * p, unsigned int i, unsigned int n);  ///Esta funcion recibe mi puntero original y la longitud que quiero y retorna un nuevo puntero.
  4. char * LECTURA();
  5.  
  6. int main()
  7. {
  8.    char *pa; /// Puntero donde guardo la informacion del archivo
  9.    char *pb;
  10.    unsigned int inicio;
  11.    unsigned int cantidad;
  12.  
  13.    pa=LECTURA();
  14.    printf(" \nLo leido del archivo es : %s \n ",pa);
  15.    printf("Ingrese el caracter desde el cual desea leer de la frase : ");
  16.    scanf("%d",&inicio);
  17.    printf("\nIngrese la cantidad de caracteres que desea contar: ");
  18.    scanf("%d",&cantidad);
  19.    pb=subcadena(pa,inicio,cantidad);
  20.    printf("\nLa frase queda : %s",pb);
  21.    return 0;
  22. }
  23.  
  24.  
  25.  
  26. char* LECTURA()
  27. {
  28.    int i=0;
  29.    char c;
  30.    char *pa;
  31.  
  32.    FILE*arch;
  33.  
  34.    arch=fopen("C:\\Users\\PC\\Desktop\\frases.txt","r"); ///Supongamos que en el txt esta "Universidad De Buenos Aires" - Solo esa frase.
  35.  
  36.    pa=malloc(sizeof(char));
  37.  
  38.    c=fgetc(arch);
  39.  
  40.    while(!feof(arch))
  41.    {
  42.        *(pa+i)=c;
  43.        i++;
  44.        pa=realloc(pa,(i+1)*sizeof(char));
  45.        c=fgetc(arch);
  46.    }
  47.    *(pa+i)='\0';
  48.    fclose(arch);
  49.    return pa;
  50. }
  51.  
  52.  
  53.  
  54. char * subcadena (char * p, unsigned int i, unsigned int n)
  55. {
  56.  
  57. int j=0;
  58. char * pc;
  59. char letra;
  60. pc=malloc(sizeof(char));
  61. while(*(p+i)!='\0' && i<=n)
  62. {
  63.     letra=*(p+i);
  64.     *(pc+j)=letra;
  65.     j++;
  66.     pc=realloc(pc,(j+1)*sizeof(char));
  67.     i++;
  68. }
  69.    *(pc+j)='\0';
  70.    return pc;
  71. }
  72. code]


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Consutla sobre un problema con punteros y memoria dinamica.
« Respuesta #1 en: 22 Septiembre 2016, 22:15 pm »

Creo que asi deberia de quedar
Código
  1. char * subcadena (char * p, unsigned int i, unsigned int n) {
  2. int j=0;
  3. char *pc;
  4. pc=malloc(n-i+1);
  5. while(*(p+i+j)!='\0' && (i+j)<=n) {
  6. *(pc+j)=*(p+i+j);
  7. j++;
  8. }
  9. *(pc+i+j)='\0';
  10. return pc;
  11. }
Saludos!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
quien me puede ayudar a pasar este codigo con punteros y memoria dinamica
Programación C/C++
attackers 3 2,439 Último mensaje 23 Noviembre 2011, 13:04 pm
por attackers
Duda sobre memoria dinamica C++
Programación C/C++
erest0r 6 3,633 Último mensaje 11 Septiembre 2013, 09:34 am
por erest0r
Punteros y memoria dinamica
Programación C/C++
bemone 4 2,250 Último mensaje 30 Agosto 2015, 03:13 am
por geeke
Consulta sobre punteros y memoria dinámica
Programación C/C++
ing_maipu 5 3,552 Último mensaje 18 Octubre 2017, 19:21 pm
por ing_maipu
Retornar punteros char? ¿Si o si memoria dinamica? « 1 2 »
Programación C/C++
Xargam 11 4,980 Último mensaje 27 Junio 2018, 00:26 am
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines