Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/03/2015, 14:07
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 3 meses
Puntos: 38
Respuesta: No me hace un gets

Código C:
Ver original
  1. #include<stdio.h>
  2.  
  3. main() {
  4.     int n, i, k, notas[100];
  5.     char nombres[100][100];
  6.     printf ( "Introduzca la cantidad de alumnos: " );
  7.     scanf ( "%d%*c", &k );
  8.     printf ( "Introduzca la cantidad de notas por alumno: " );
  9.     scanf ( "%d%*c", &n );
  10.    
  11.     for ( i = 0; i < k; i++ ) {
  12.         printf ( "Alumno numero %d: ", i + 1 );
  13.         scanf ( "%99[^\n]%*c", nombres[i]);
  14.     }
  15.    
  16.     for ( i = 0; i < k; i++ ) {
  17.         printf ( "%s\n", nombres[i] );
  18.     }
  19. }
Estaba editando el otro texto pero no me dio tiempo XD

a ver...

para leer un char o un int al que despues vas a leer mas chars ya sean solos o en cadena usas: scanf ( "%d%*c", &letra ); El %*c ignora el enter si lo quitas va dar problemas, puedes probar. XD

Para leer una cadena usa: scanf ( "%99[^\n]%*c", cadenaCaracteres); para leer 99 chars ignorar el enter y poner el \0 al final de la cadena(un chollo XD). Solo tiene un problema... Si introduces mas de 99 chars el restante te va quedar en el buffer y entrará en la siguiente variable, pero lo mismo le pasa con gets y otras funciones, si quieres estar segura aprende a limpiar el buffer que te va ser mejor.

Si declaras una cadena de 200 en el scanf pones %199 en vez de 99 capiche? Uno menos de lo que declaras siempre.

No se si hay nada mejor, apenas limpiando el buffer, que es algo mas complicado.