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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Por qué cambian los caracteres?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Por qué cambian los caracteres?  (Leído 1,627 veces)
goto C

Desconectado Desconectado

Mensajes: 20


Ver Perfil
¿Por qué cambian los caracteres?
« en: 2 Septiembre 2013, 23:46 pm »

Hola, estoy desesperado... si alguien me puede explicar que pasa en este programa...
Os pongo una parte del código, que es lo que falla, y es que los caracteres que se guardan en el while no son los que se muestran en el for que hay después... y no sé por qué!!!! Que desesperación!!!! Ya no sé qué hacer jajaja.

Código:
#include<stdio.h> 
#include<stdlib.h>

int main()
{
   char *texto; //texto a cifrar
   char nombre[20]; //nombre que le vamos a dar al fichero de texto
   FILE *pf; //puntero de tipo FILE, necesario para manejar ficheros
   int i=0, numerocaracteres=0;

   printf("Introduce el nombre del archivo\n");
   printf("segun la forma nombre.tipo)\n");

   scanf("%s", &nombre);
   getchar();

   pf=fopen(nombre,"r");

   //comprobamos que no haya errores al abrir el fichero
   if(pf==NULL)
   {
      printf("Error al abrir el fichero. Pulsa Enter para salir\n");
      getchar();
      exit(1);
   }

   texto=(char *)malloc(1*sizeof(char));
   while(!feof(pf) && !ferror(pf))
   {
      texto[numerocaracteres]=fgetc(pf);
      printf("texto[numerocaracteres] es %c\n", texto[numerocaracteres]);
      getchar();
      numerocaracteres++;

      texto=(char *)realloc(texto,numerocaracteres*sizeof(char));
   }

   for(i=0;i<numerocaracteres;i++)
      printf("texto[i] es %c\n", texto[i]);
   getchar();

   fclose(pf);

//..........................

Muchas gracias y saludillos.


En línea

ecfisa

Desconectado Desconectado

Mensajes: 114


Ver Perfil
Re: ¿Por qué cambian los caracteres?
« Respuesta #1 en: 4 Septiembre 2013, 18:49 pm »

Hola goto C.

Proba de este modo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.  FILE *fp;
  8.  char *texto, nombre[255];
  9.  int i, nc = 0;
  10.  
  11.  printf("Nombre de archivo: ");
  12.  fgets(nombre, 20, stdin);
  13.  nombre[strlen(nombre)-1] = '\0';
  14.  
  15.  if ((fp = fopen(nombre,"rt")) == NULL) {
  16.    perror("Error: ");
  17.    return 1;
  18.  }
  19.  
  20.  if ((texto = (char *) malloc(sizeof(char))) == NULL) {
  21.    printf("Memoria insuficiente.");
  22.    return 1;
  23.  }
  24.  
  25.  while (!feof(fp)) {
  26.    texto[nc++] = fgetc(fp);
  27.    if ((texto = (char*)realloc(texto, (nc+1)*sizeof(char))) == NULL) {
  28.      printf("Memoria insuficiente.");
  29.      return 1;
  30.    }
  31.  }
  32.  
  33.  for(i = 0; i < nc; i++)
  34.    printf("Texto[%d] es %c\n", i, texto[i]);
  35.  
  36.  fclose(fp);
  37.  
  38.  return 0;
  39. }
  40.  

Saludos :)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines