[ Foro de C ]

estructuras

12-Nov-2013 03:14
Luis Coronel
3 Respuestas

hola mi duda es para el siguiente ejercicio:

Un ?struct? que almacene datos de una canción en formato MP3: Artista, Título, Duración (en segundos), Tamaño del fichero (en KB). Un programa debe pedir los datos de una canción al usuario, almacenarlos en dicho ?struct? y después mostrarlos en pantalla.

He hecho el codigo de la siguiente manera, pero no se si es exactamente eso lo que pide el ejercicio.


#include <stdio.h>

struct Cancion
		{
		char artista;
		char titulo;
		int duracion; 			
		int peso;			
		}
main(){
	struct Cancion MP3;	
	printf("Ingrese nombre del artista: ");
	scanf("%s",MP3.artista);	
	printf("\nIngrese nombre del titulo: ");
	scanf("%s",MP3.titulo);
	printf("\nIngrese el tamaño: ");
	scanf("%d",MP3.peso);
	printf("\nSe han ingresado correctamente los datos");
}


Cuando ejecuto el programa ingreso un nombre y no hace nada.

Mi pregunta es asi de esa forma deberia tomar los datos ingresado por teclado? si no es de esa forma, cual es la forma correcta de hacerlo?
Desde ya muchas gracias


12-Nov-2013 10:25
Nacho Cabanes (+84)

Por una parte, es que tu programa no debe hacer "casi nada": sólo escribir

Se han ingresado correctamente los datos

Si ni siquiera ves eso, puede ser porque se cierre la ventana inmediatamente, sin darte tiempo a leer nada, algo habitual si usas un entorno de desarrollo para Windows. Puedes añadir "getchar();" al final del programa.

Es una duda frecuente. Mira aquí:

http://www.aprendeaprogramar.com/mod/forum/discuss.php?d=922


15-Nov-2013 16:25
Luis Coronel

Hola, nuevamente molestando por aca, tengo una duda con respecto al ejercicio, este es el codigo que tengo:


#include <stdio.h>

struct Cancion
		{
		char artista[50];
		char titulo[30];
		int duracion; 			
		int peso;			
		}
main(){
	 struct Cancion MP3;	
	MP3.artista="Mana";
	MP3.titulo="Rayando el sol";
	MP3.duracion=120;
	MP3.peso=3024;
	printf(" -MP3-\n");
	printf("Artista: %s\n",MP3.artista);
	printf("Titulo: %s\n",MP3.titulo);
	printf("duracion: %d\n",MP3.duracion);
	printf("Tamaño: %d\n",MP3.peso);
}


Porque me da un error cuando quiere asignar MP3.artista="mana" si lo he declarado como char. O hay otra forma de hacerlo.
Por cierto eso es lo que pide el ejercicio? si es que entendi bien ahora...
Y por cierto uso Linux - Debian como entorno de desarrollo.


15-Nov-2013 18:24
Nacho Cabanes (+84)

En C no es válido hacer en general algo


texto="hola";


Sólo se puede hacer en el momento estricto en el que se declara la variable, pero no más adelante. La forma de dar un valor a una variable de texto es


strcpy(texto,"hola");


De igual modo, en tu caso, para dar valor a los campos de texto tendrás que hacer


strcpy(MP3.artista,"Mana");






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)