He siguiente código:Cómo imprimir correctamente el entero y la cadena en c?
char *s1, *s2;
char str[10];
printf("type a string: ");
scanf("%s", str);
s1 = &str[0];
s2 = &str[2];
printf("%s\n", s1);
printf("%s\n", s2);
Cuando ejecuto el código, y entrar en la entrada "A 1" de la siguiente manera:
type a string: A 1
me dieron el siguiente resultado:
A
�<�
Intento leer el primer carácter como una cadena y el tercer carácter como un entero, y luego imprimirlos en la pantalla. El primer personaje siempre funciona, pero la pantalla solo muestra elementos aleatorios después de eso ... ¿Cómo debo solucionarlo?
Gracias
Otra cosa que la gente no había mencionado un poco: por favor no scanf en un búfer de tamaño limitado. El usuario puede simplemente ingresar más que el límite y atornillar su programa. (ver también: ataques de desbordamiento de búfer) –
@DennisMeng: Se puede agregar un especificador de ancho, por ej. '% 123s'. Todavía es potencialmente peligroso ya que ese ancho no incluye el terminador nulo. – diapir
@diapir Verdad. Lo importante es evitar el desbordamiento del búfer. –