Aprendiendo a programar: una ayuda??

Nolek
07 de Octubre del 2009
Hola, estoy aprendiendo a programar y me gustaría saber si podríais ayudarme. Estoy intentando crear un programa para ms-dos que te permita introducir nombre y apellido e intentare algun parametro mas, xo no m funciona, despues de la casilla nombre me sale todo yeno d iconos, y despues de la casilla apellido tambien ¬¬

os dejo aqui el codigo, alguien me puede decir que falla?

#include <stdio.h>

int main ()
{
char nombre [40];
char apellido [60];


printf ( "Nombre: %s", nombre);
scanf ("%s", nombre);
printf ( "Apellido: %s", apellido);
scanf ("%s", apellido);

return (0);

pacorogles
07 de Octubre del 2009
Simplemente, cuando haces printf para el nombre, le estas diciendo que te imprima el valor de nombre, cuando aun no le has dado ningun valor, y lo mismo ocurre con apellido. Las variables nombre y apellido estan correctamente declaradas como arrays de caracteres, pero no estan inicializadas (lo estaran despues del correspondiente scanf). Por ello, te intenta imprimir el contenido correspondiente a esas posiciones de memoria (de ahi que veas cosas raras).

En C y C++ debes tener cuidado con el empleo de variables no inicializadas, de hecho el compilador deberia haberte dado, al menos, un mensaje de warning.

Tampoco debes dar por hecho el que una variable declarada se inicializa automaticamente a 0. Eso es algo que depende del compilador, pero no debes contar con ello.

Prueba de esta manera:

printf("Nombre: ");
scanf("%s", nombre);
printf("Apellido: ");
scanf("%s", apellido);

Espero que te sirva de ayuda.
Saludos,

PACO