logo

fgets() i gets() en llenguatge C

Per llegir un valor de cadena amb espais, podem utilitzar gets() o fgets() en llenguatge de programació C. Aquí, veurem quina diferència hi ha entre gets() i fgets().

fgets()

El fgets() llegeix una línia del flux especificat i l'emmagatzema a la cadena apuntada per str. S'atura quan es llegeixen (n-1) caràcters, es llegeix el caràcter de nova línia o s'arriba al final del fitxer, el que passi primer.



Sintaxi

char * fgets  (char * str , int n , FILE * stream );>

Paràmetres

    str: punter a una matriu de caràcters on es copia la cadena llegida. n: nombre màxim de caràcters que s'han de copiar a str (incloent el caràcter nul final). *stream: punter a un objecte FILE que identifica un flux d'entrada.

Nota: stdin es pot utilitzar com a argument per llegir des de l'entrada estàndard.

Valor de retorn

  • La funció fgets() retorna un punter a la cadena on s'emmagatzema l'entrada.

Característiques de fgets()

  • Segueix alguns paràmetres com ara la longitud màxima, la memòria intermèdia i la referència del dispositiu d'entrada.
  • És Caixa forta s'utilitza perquè comprova l'enllaç de la matriu.
  • Continua llegint fins que es troba un nou caràcter de línia o el límit màxim de la matriu de caràcters.

Exemple de fgets()

Suposem que el nombre màxim de caràcters és de 15 i la longitud d'entrada és superior a 15, però encara fgets() només llegirà 15 caràcters i l'imprimirà.

C



què és l'exportació a linux


com trobar la mida del monitor





// C program to illustrate fgets()> #include> #define MAX 15> int> main()> {> >// defining buffer> >char> buf[MAX];> >// using fgets to take input from stdin> >fgets>(buf, MAX, stdin);> >printf>(>'string is: %s '>, buf);> >return> 0;> }>

>

int a char
>

Com que fgets() llegeix l'entrada de l'usuari, hem de proporcionar l'entrada durant el temps d'execució.

 Input: Hello and welcome to techcodeview.com Output: string is: Hello and welc>

obté ()

Llegeix caràcters de l'entrada estàndard (stdin) i els emmagatzema com a cadena C a str fins que s'arribi a un caràcter de nova línia o al final del fitxer.

  • No és segur d'utilitzar perquè no comprova l'enllaç de la matriu.
  • S'utilitza per llegir cadenes de l'usuari fins que no es troba cap caràcter de nova línia.

Sintaxi

char * gets ( char * str  );>

Paràmetres

    str: punter a un bloc de memòria (matriu de caràcters) on la cadena llegida es copia com a cadena C.

Valor de retorn

  • La funció retorna un punter a la cadena on s'emmagatzema l'entrada.

Exemple de gets()

Suposem que tenim una matriu de caràcters de 15 caràcters i l'entrada és superior a 15 caràcters, gets() llegirà tots aquests caràcters i els emmagatzemarà en una variable. Atès que gets() no verifica el límit màxim de caràcters d'entrada, en qualsevol moment el compilador pot retornar un error de desbordament de la memòria intermèdia.

C++


modificar el fitxer linux



radix sort
// C program to illustrate> // gets()> #include> #define MAX 15> int> main()> {> >// defining buffer> >char> buf[MAX];> >printf>(>'Enter a string: '>);> >// using gets to take string from stdin> >gets>(buf);> >printf>(>'string is: %s '>, buf);> >return> 0;> }>

>

>

Com que gets() llegeix l'entrada de l'usuari, hem de proporcionar l'entrada durant el temps d'execució.

 Input : Hello and welcome to techcodeview.com Output : Hello and welcome to techcodeview.com>

Conclusió

Les funcions fgets() i gets() es poden utilitzar per llegir l'entrada de cadena des de l'entrada estàndard. La principal diferència entre la funció fgets() i la funció gets() és que la funció fgets() permet a l'usuari especificar el nombre màxim de caràcters per llegir i també podem canviar el flux d'entrada a qualsevol fitxer a fgets().