Autor
|
Tema: Duda sobre código (Leído 3,096 veces)
|
Xenomorfo77
Desconectado
Mensajes: 61
|
Tengo un problema en este código, el puntero es una matriz a la que le doy a cada elemento el valor 'f', el problema esta en cuando lo imprimo al archivo. El total de elementos no se corresponde con el tamaño elegido. Por ejemplo si pongo 100, me imprime 100 'f' mas basura que no se porque sale.¿Alguien sabe porqué? #include <stdlib.h> #include <stdio.h> #include <windows.h> #include <cstdlib> #include <iostream> #include <fstream> using namespace std; int main() { int nElementos = 0; char *PnElementos = NULL; int i = 0; printf("Numero de elementos de la matriz: "); printf("ELEMENTOS: %d",nElementos ); Sleep(2000); PnElementos = (char*)malloc((nElementos + 1) * sizeof(int)); for(i=0;i<nElementos;i++) { PnElementos[i]='f'; printf("Valor de elemento(%d) = %c\n",i ,PnElementos [i ]); } PnElementos[i]='\0'; Sleep(5000); ofstream fichero; fichero.open("archivo.txt"); fichero << PnElementos; fichero.close(); }
|
|
« Última modificación: 6 Mayo 2012, 21:42 pm por Xenomorfo77 »
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
Hola! el problema es que estas haciendo un sizeof(int) en el malloc, de esta forma estas reservando 100 int y no 100 char, es por eso que imprime basura demas. Deberia ser sizeof(char) para tener un arreglo de 100 caracteres
Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
linkingcrk
|
Insertar Cita Hola! el problema es que estas haciendo un sizeof(int) en el malloc, de esta forma estas reservando 100 int y no 100 char, es por eso que imprime basura demas. Deberia ser sizeof(char) para tener un arreglo de 100 caracteres
Saludos te me adelantastes justo le estaba respondiendo cuando tu le respondistes Xenomorfo. los char ocupan 1 Byte y los Int 4 te recomiendo repasar estas cosas...
|
|
|
En línea
|
|
|
|
Xenomorfo77
Desconectado
Mensajes: 61
|
Hola, gracias a los dos pero lo cierto es que ya lo había probado, aunque le ponga sizeof(char) me sigue fallando. Pruebenlo en sus maquinas por ejemplo con 100, cuando llega a la línea que imprime el total de elementos de la matriz me da 103 en vez de 100 por lo cual me impre 100 'f' y 3 caracteres basura.
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
El problema es q strlen espera una cadena. Toda cadena termina con el caracter '\0', es por esto q strlen devolvia mal... Agrega: PnElementos[i]='\0';
despues del for(ahi tendria q andar bien y usa char en el sizeof). Ademas la condicion del for debe ser i<nElementos-1; ya que el '\0' va a ocupar el espacio 99 o podrias reservar 101 char en ves de 100 Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
Xenomorfo77
Desconectado
Mensajes: 61
|
El problema es q strlen espera una cadena. Toda cadena termina con el caracter '\0', es por esto q strlen devolvia mal... Agrega: PnElementos[i]='\0';
despues del for(ahi tendria q andar bien y usa char en el sizeof). Ademas la condicion del for debe ser i<nElementos-1; ya que el '\0' va a ocupar el espacio 99 o podrias reservar 101 char en ves de 100 Saludos Muchas gracias durasno, creia que el '\0' se agregaba solo al llegar al ultimo elemento. Solucionado gracias de nuevo. Modifico el code y lo dejo bien por si a alguien le sirve. Un saludo.
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
De nada ... cuando usas funciones q manejan cadenas(ej: scanf, fgets...),el caracter '\0' si se agrega solo, pero cuando usas bucles para crear algo como vos hicist, lo tenes q agregar Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
Xenomorfo77
Desconectado
Mensajes: 61
|
De nada ... cuando usas funciones q manejan cadenas(ej: scanf, fgets...),el caracter '\0' si se agrega solo, pero cuando usas bucles para crear algo como vos hicist, lo tenes q agregar Saludos Entendido, gracias.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
duda sobre generar código en textbox
Programación Visual Basic
|
julietth
|
2
|
2,380
|
4 Abril 2009, 18:26 pm
por julietth
|
|
|
Duda sobre codigo
Programación C/C++
|
javituni
|
5
|
2,670
|
13 Abril 2013, 18:01 pm
por javituni
|
|
|
Duda sobre cierto código en C
Programación C/C++
|
valthomous
|
1
|
1,657
|
25 Mayo 2014, 15:24 pm
por rir3760
|
|
|
Duda sobre código
Java
|
Genvi
|
1
|
1,696
|
12 Diciembre 2015, 23:10 pm
por DarK_FirefoX
|
|
|
Duda sobre una linea en mi codigo que no funciona
Programación C/C++
|
miguevv
|
6
|
2,731
|
11 Agosto 2018, 03:31 am
por miguevv
|
|