Diferència clau: scanf vs gets
Una funció és un conjunt d'instruccions per dur a terme una tasca específica. Sense escriure totes les declaracions al mateix programa, es pot dividir en múltiples funcions. En programació, l'usuari pot definir les seves pròpies funcions. També hi ha funcions que proporcionen els llenguatges de programació. El llenguatge C proporciona una sèrie de funcions, de manera que el programador les pot utilitzar directament sense implementar-les des del principi. Dues d'aquestes funcions proporcionades pel llenguatge C són scanf i gets. Aquest article parla de la diferència entre aquestes dues funcions. La diferència clau entre scanf i gets és que scanf acaba prenent entrada en trobar un espai en blanc, una nova línia o un final de fitxer (EOF), mentre que gets considera un espai en blanc com a part de la cadena d'entrada i acaba l'entrada en trobar una nova línia o un EOF.
Què és l'escanf?
La funció scanf pot llegir les entrades del teclat i les emmagatzema segons l'especificador de format donat. Llegeix l'entrada fins que es troba amb un espai en blanc, una línia nova o un EOF. La sintaxi és la següent.
scanf(“cadena de format”, llista d'adreces de variables);
Consulteu l'exemple que es mostra a continuació per entendre l'escanf.
Figura 01: escaneig amb una entrada
Segons el programa anterior, l'entrada que s'obté del teclat és un nombre enter, de manera que l'especificador de format és %d. Si obté un valor de caràcter, l'especificador de format és %c. Si s'obté un valor de coma flotant, l'especificador de format és %f. El valor d'entrada rebut s'ha d'emmagatzemar a la variable numèrica. Per tant, l'adreça del nombre variable es passa a la funció scanf. Ara la variable número conté el valor donat per l'usuari des del teclat. Finalment, podem imprimir la variable numèrica per comprovar-ne el valor.
També és possible rebre més d'un valor alhora.
Figura 02: scanf amb múltiples entrades
Les entrades rebudes s'emmagatzemen a la variable número1 i número2. Els valors es poden comprovar mitjançant printf.
Què és obté?
La funció gets està utilitzant per rebre informació del teclat fins que es troba una nova línia o EOF. L'espai en blanc es considera una part de l'entrada. La sintaxi de la funció gets és la següent.
gets(“on emmagatzemar la cadena”);
Si hi ha un error en rebre la cadena, la funció gets retornarà un valor nul.
Consulteu l'exemple següent,
Figura 03: obté
La funció gets rep l'entrada i s'emmagatzema a la variable word1. Si el programador va utilitzar scanf en comptes de gets i va introduir una cadena com ara "hola món", scanf llegirà la cadena com a dues cadenes a causa de l'espai en blanc. Però gets el llegirà com una cadena "hola món".
Quines similituds hi ha entre scanf i gets?
- Totes dues són funcions proporcionades pel llenguatge de programació C.
- Tots dos haurien d'incloure el fitxer de capçalera stdio.h per utilitzar aquestes funcions.
- Tots dos es poden utilitzar per obtenir entrada de l'entrada estàndard.
Quina diferència hi ha entre scanf i gets?
scanf vs obté |
|
scanf és una funció C per llegir l'entrada de l'entrada estàndard fins a trobar un espai en blanc, una nova línia o un EOF. | gets és una funció C per llegir l'entrada de l'entrada estàndard fins a trobar una nova línia o EOF. Considera els espais en blanc com a part de l'entrada. |
Sintaxi | |
La funció scanf pren la cadena de format i la llista d'adreces de les variables. per exemple. scanf(“%d”, &número); | La funció gets pren el nom de la variable per emmagatzemar el valor rebut. Per exemple. obté(nom); |
Flexibilitat | |
scanf pot llegir diversos valors de diferents tipus de dades. | gets() només obtindrà dades de cadena de caràcters. |
Resum: scanf vs gets
scanf i gets són funcions proporcionades pel llenguatge de programació C. L'usuari no necessita implementar aquestes funcions des del principi. Poden utilitzar-los directament als seus programes. La diferència entre scanf i gets és que, scanf acaba prenent entrada en trobar un espai en blanc, una nova línia o un End Of File (EOF) i obté considera un espai en blanc com a part de la cadena d'entrada i acaba l'entrada en trobar una nova línia o EOF. L'ús de scanf o gets depèn de la manera de rebre l'entrada de l'usuari des de l'entrada estàndard que és el teclat la majoria del temps. scanf és més flexible del que obté.
Baixa la versió PDF de scanf vs gets
Podeu baixar la versió PDF d'aquest article i utilitzar-la per a finalitats fora de línia segons la nota de citació. Si us plau, descarregueu la versió PDF aquí Diferència entre scanf i gets