Page 371

B La lectura de datos por teclado, paso a paso

CC 2003, 2008 Andr´ es Marzal e Isabel Gracia

u 0

a

1

2

3

4

5

n 6

o

7

8

\n

d

o

s

\n

\n

d

o

s

\n

9

u n o \0

A continuaci´ on, sigue salt´ andose los blancos: u 0

a

1

2

3

4

5

n 6

o

7

8

9

u n o \0

Pasa entonces a consumir caracteres no blancos y se detiene ante el primer blanco: u 0

a

2

3

o

\n

4

5

6

7

8

9

4

5

6

7

8

9

d

o

s

\n

u n o \0 0

b

1

n

1

2

3

d o s \0

Ya est´a. Imagina ahora que nuestro usuario quiere introducir en a la cadena "uno dos" y en b la cadena "tres". Aqu´ı tienes lo que ocurre al ejecutar el programa Cadena 1: uno dos Cadena 2: La cadena 1 es uno y la cadena 2 es dos

El programa ha finalizado sin darle tiempo al usuario a introducir la cadena "tres". Es m´as, la primera cadena vale "uno" y la segunda "dos", con lo que ni siquiera se ha conseguido el primer objetivo: leer la cadena "uno dos" y depositarla tal cual en a. Analicemos paso a paso lo sucedido. La entrada que el usuario teclea ante el primer scanf es ´esta: u

n

o

d

o

s

\n

La funci´on lee en a los caracteres ’u’, ’n’ y ’o’ y se detiene al detectar un blanco. El nuevo estado se puede representar as´ı: u 0

a

n 1

o 2

3

d 4

5

o 6

7

s 8

\n 9

u n o \0

El segundo scanf entra en juego entonces y ((aprovecha)) lo que a´ un no ha sido procesado, as´ı que empieza por descartar el blanco inicial y, a continuaci´on, consume los caracteres ’d’, ’o’, ’s’: u 0

a

Introducci´ on a la Programaci´ on con C

1

o 2

3

d

o

s

\n

4

5

6

7

8

9

4

5

6

7

8

9

u n o \0 0

b

n

1

2

3

d o s \0 365

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement