Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/10/2006, 03:32
Nivel7
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 9 meses
Puntos: 2
key0...
es verdad uno de tus errores, es declara la variable nombre como un entero, esto es incorrecto, ya que printf usa un parametro char*, es decir un array de caracteres o un pntero a char.

lo correcto seria usar char nombre[20];

y no, no es necesrio usar & ni con printf, ni con scanf, ya que en este caso nombre en realidad es el nombre que identifica una seccion de memoria.

y para detener tu aplicacion antes de salir, usa getchar(); ó system("pause");
este ultimo solo funciona en windows.

el problema con getchar(), es que si elbuffer de lectura no esta vacio, no detendra la aplicacion.

bien podrias hacer:

fflush(stdin);
getchar();
para asegurarte de que se detendra.

lo que se hace es leer de la entrada estandar, esto permite que la aplicacion se detenga a esperar un caracter de entrada.

el system, hace una llamada al SO:

xp64, tal vez has visto que a prinf o scanf se le pasen parametros diferentes a char[], esto es posible por que estas funciones usan parametros variables, indefinidos o como quieras llamarles,

el prototip es este:

printf(char* , ...);

el puntero a char es para una cadena que sirve para indicar el formato y cantidad de tipos que se le pasen a la funcion, los 3 puntos indican parametros variables o indefinidos.

para escribir tanto una cadena como un entero hacemos:

char nombre[] = "Un nombre";
int edad = 20;

printf("%s %i \n", nombre, edad);

como vez printf imprimira las 2 variables a la vez, pero tenemos que indicarle el respecitvo formato de las variables a escribir. %s para string(cadena), %i para integer(entero), hay otros indicadores de formato.

con scanf es similar solo que cuando lees una variable diferente a una cadena tienes que usar el operador &, para pasar la memoria de la variable y esta sufra cambios, de lo contrario se parasara una copia.
Saludos.