Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - IvanPavka

Páginas: [1]
1
Bueno mira, yo compilo con Turbo c++ 3.1 y no tengo errores, la verdad que es raro eso, tendría que ver tu código. Vos sabes que a mi me pasa, a veces, que cuando uso una constante y no la inicializo en 0 (cero), se asigna el espacio en memoria y queda con datos "basura" que le dicen, y cuando quiero mostrar o realizar alguna operación matemática, me aparase cualquier resultado jajajaja. proba inicializando la constante! Saludos! Y felices fiestas!

2
claro, te entiendo, pero no hace falta, porque el compilador te va a mostrar el contenido del puntero, porque vos lo que tenes ahí es un puntero a un grupo contiguo de arrays, y el nombre del array es un puntero al primer elemento del array, y bueno el compilador esta programado que para en los arrays, y tmb en estructuras, te muestre el dato y no la dirección! me captas?

3
Hola Mayen! mira, hay varios problemitas.


1ro) La función de biblioteca es alloc.h, no malloc.h
2do)"..printf("\nSe ha reservado espacio de memoria para %d caracteres", &n);.."
       lo que estas haciendo ahí es que se muestre la dirección que se le asigno en
       memoria a la variable n. Esa es la función que tiene el operador &. si le borras
       el "&" te mostrará el numero que ingresaste.
3ro) Cuando haces referencia al puntero en las funciones printf y scanf deben ir sin el
       operador indirección (*)
4to) Cuando vas a capturar la cadena de caracteres que ingresaste en scanf, debes
       tipear:  "..scanf("%[^\n]",var);.." eso significa que va a capturar todo lo que
       escribas, menos el carácter de nueva línea(\n). y cuando especificas la variable
       en donde guardarás la cadena, esta va sin el operador &. Este operador lo usas
       únicamente para los tipo de datos enteros, flotantes y cuando solo guardas un solo
       carácter.
 
Espero que me entiendas. je  :P

Acá te pongo el código con las correcciones que te explique mas arriba.

#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>

int main(){

int n;
char *puntcadena;
printf("Ingrese el numero de caracteres de la cadena:");
scanf("%d",&n);
getchar();
puntcadena=(char*)malloc(n*sizeof(char));

printf("\nSe ha reservado espacio de memoria para %d caracteres", n);

printf("\nIngrese la cadena:");
scanf("%[^\n]",puntcadena);


printf("El valor almacenado en la variable de la cadena es %s", puntcadena);

return 0;
}


Si habrás notado, hay un "getchar();" use getchar(); para liberar el buffer de memoria, porque en esa parte del programa cuando presiono la tecla enter, el buffer se queda con el carácter de nueva línea en memoria, y me salta las otras expresiones y no me deja hacer nada. si no comprendes bien lo que te explico, proba sacando getchar(); ejecuta y fíjate que pasa, luego volvele a poner getchar() y proba, a ver que pasa  :)

Cualquier duda consultame, y trataremos de solucionar =)

4
Mayem! hola! Te cuento la función malloc lo que hace es asignar memoria para una variable tipo puntero! se utiliza esta función con el archivo de cabecera alloc.h

es el caso que te puso alastor, s es un puntero a carácter (puede ser int, float, double, etc) y para le p la explicación es la misma,

p=(char*)malloc(n*sizeof(char));

en esta expresión, malloc va a asignar, cada 2bites de memoria "...sizeof(char)...", un tamaño 'n' de memoria. la expresión "(char*)" es la función "cast" esta función convierte cualquier tipo de dato a otro tipo de dato, (en este caso convierte a un tipo de dato carácter).

me explico?
un abrazo

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".