Per leggere un valore stringa con spazi, possiamo usare gets() o fgets() nel linguaggio di programmazione C. Qui vedremo qual è la differenza tra goes() e fgets().
fget()
fgets() legge una riga dal flusso specificato e la memorizza nella stringa puntata da str. Si interrompe quando vengono letti (n-1) caratteri, viene letto il carattere di nuova riga o viene raggiunta la fine del file, a seconda di quale evento si verifica per primo.
Sintassi
char * fgets (char * str , int n , FILE * stream );>
Parametri
- str: Puntatore ad un array di caratteri dove viene copiata la stringa letta. n: numero massimo di caratteri da copiare in str (incluso il carattere nullo di terminazione). *stream: puntatore a un oggetto FILE che identifica un flusso di input.
Nota: standard può essere utilizzato come argomento per leggere dallo standard input.
Valore di ritorno
- La funzione fgets() restituisce un puntatore alla stringa in cui è memorizzato l'input.
Caratteristiche di fgets()
- Seguono alcuni parametri come Lunghezza massima, buffer e riferimento del dispositivo di input.
- È sicuro da usare perché controlla il limite dell'array.
- Continua a leggere finché non viene incontrato un carattere di nuova riga o il limite massimo dell'array di caratteri.
Esempio di fget()
Diciamo che il numero massimo di caratteri è 15 e la lunghezza dell'input è maggiore di 15, ma fgets() leggerà comunque solo 15 caratteri e lo stamperà.
ricerca bfs
C
// 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;> }> |
>
>
Poiché fgets() legge l'input dell'utente, dobbiamo fornire l'input durante il runtime.
Input: Hello and welcome to techcodeview.com Output: string is: Hello and welc>
prende()
Legge i caratteri dallo standard input (stdin) e li memorizza come una stringa C in str finché non viene raggiunto un carattere di nuova riga o la fine del file.
- Non è sicuro da usare perché non controlla il limite dell'array.
- Viene utilizzato per leggere stringhe dall'utente fino a quando non viene incontrato un carattere di nuova riga.
Sintassi
char * gets ( char * str );>
Parametri
- str: Puntatore ad un blocco di memoria (array di char) dove la stringa letta viene copiata come stringa C.
Valore di ritorno
- La funzione restituisce un puntatore alla stringa in cui è archiviato l'input.
Esempio di get()
Supponiamo di avere un array di caratteri di 15 caratteri e l'input è maggiore di 15 caratteri, goes() leggerà tutti questi caratteri e li memorizzerà in una variabile. Poiché goes() non controlla il limite massimo di caratteri di input, in qualsiasi momento il compilatore potrebbe restituire un errore di overflow del buffer.
C++
// 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;> }> |
>
elenco C#
>
Poiché goes() legge l'input dell'utente, dobbiamo fornire l'input durante il runtime.
Input : Hello and welcome to techcodeview.com Output : Hello and welcome to techcodeview.com>
Conclusione
Entrambe le funzioni fgets() e goes() possono essere utilizzate per leggere l'input di stringa dallo standard input. La differenza principale tra la funzione fgets() e la funzione goes() è che la funzione fgets() consente all'utente di specificare il numero massimo di caratteri da leggere e possiamo anche modificare il flusso di input in qualsiasi file in fgets().