Article View: es.comp.os.linux.programacion
Article #11012RE: Problemas con scanf en C
From: Jose I
Date: Mon, 07 Jan 2002 21:49
Date: Mon, 07 Jan 2002 21:49
48 lines
2689 bytes
2689 bytes
Suceden un par de cosas en el programa.
1�) La declaracion de nifdos es incorrecta, si ha de albergar un char esta
debe de ser:
char nifdos; // y no int nifdos;
2�) Cuando se captura con scanf una variable de tipo char se debe de usar %c
en lugar de %i
scanf("%c", &nifdos);
Ademas te sugiero otro cambio.
paso3 = dni % 23; // La operacion % devuelve el resto de la divisi�n
entera entre dos numeros.
Otras observaciones.
Para imprimir una variable:
printf("La variable nombre_variable contiene %i\n",
nombre_variable);
// Donde %i se sustituir� por el valor de la variable la cual es de
tipo entero;
// Si fuera de tipo char en vez de %i usar %c
// Nota que al contrario que scanf el nombre de la varable no lleva
& delante.
// Si pusieses ampersand delante imprimir�a la direccion de memoria
de la varible.
// En scanf se pone & porque el segundo argumento que ha de recibir
scanf es la
// direccion de memoria donde almacenar el valor recogido por el
teclado.
Y ya termino.
El motivo de declarar una variable en memori seg�n el tipo de dato que
va a albergar es que el programa debe reservar espacio para esa variable en
memoria. No ocupa el mismo n�mero de bytes un char que un int que un
float.....
La memoria solo puede contener datos en binario si tu imprimes el
contenido de un char como entero corto, usando %i obtendras un n�mero que
equivale a la posici�n del caracter en la tabla ascii. Si te equivocas con
estas cosas el compilador no protestar�, pero el programa no hara lo
esperado o bien cascara dando un error de violacion de segmento es una de
las partes mas deliacas del c.
Technical Details
Message-ID:
<a1d64k$pi8q6$1@ID-123492.news.dfncis.de>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fu-berlin.de!uni-berlin.de!cable196a187.usuarios.retecal.ES!not-for-mailReferences:
<ab4993a4.0201051629.2d4139ef@posting.google.com>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,e82b9e3d7d9c7f8a X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2002-01-07 14:06:17 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fu-berlin.de!uni-berlin.de!cable196a187.usuarios.retecal.ES!not-for-mail From: "Jose I" <joseif@usuarios.retecal.es> Newsgroups: es.comp.os.linux.programacion Subject: RE: Problemas con scanf en C Date: Mon, 7 Jan 2002 22:49:39 +0100 Lines: 52 Message-ID: <a1d64k$pi8q6$1@ID-123492.news.dfncis.de> References: <ab4993a4.0201051629.2d4139ef@posting.google.com> NNTP-Posting-Host: cable196a187.usuarios.retecal.es (212.183.196.187) X-Trace: fu-berlin.de 1010441173 26813254 212.183.196.187 (16 [123492]) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2314.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300