funzione snprintf in c

funzione snprintf in c
Nella funzione snprintf (), vogliamo imparare a formattare i dati. La formattazione dei dati è essenziale quando stiamo scrivendo un po 'di stato del processo o di qualsiasi modulo in un file e un altro modulo può accedervi. A tale scopo, vogliamo condividere questi dati tra i moduli. In questo caso, vogliamo formattare i nostri dati in modo che altri moduli possano capirli allo stesso modo.

prototipo di funzione snprintf ()

La funzione snprintf () è un tipo di dati predefinito. La sua definizione è scritta in un file di intestazione standard in un file di intestazione chiamato C.

Caratteristiche della funzione snprintf ()

int snprintf (char *st, max_size, const char *formato, .. .);

Qui, utilizziamo diversi parametri, come la funzione di questi parametri:

  • *St è un buffer che può contenere la stringa.
  • max_size: numero più alto di caratteri che un buffer può contenere.
  • Formato che contiene una stringa e altre specifiche come printf ().
  • La funzione snprintf () restituisce un valore intero e il suo compito è contare il numero di caratteri all'interno del buffer.

Esempio di programmazione 1

Qui vedremo l'implementazione della funzione snprintf ():

#includere
#includere
int main ()

char buff_max [15]; // dichiarando una stringa
int x = 15;
Double y = 26.5;
snprintf (buff_max, 14, "Esamina il test di overflow, i valori di x = %d e y = %lf", x, y); // usi della funzione snprintf ()
printf (" %s \ n", buff_max); // Stampa il valore della stringa
restituzione 0;

Produzione

Spiegazione

In questo esempio di programmazione, useremo la funzione snprintf () per formattare una stringa. Qui, dichiariamo una stringa denominata "buff_max", che contiene un massimo di 15 caratteri, tranne che dichiariamo un tipo di numero intero variabile x e doppio tipo variabile y.

Ora, se utilizziamo la funzione snprintf (), dobbiamo passare alcuni argomenti all'interno della sua parentesi. Gli argomenti sono la prima di tutte le corde. Dobbiamo menzionare le dimensioni che il buffer può accumulare; Il terzo parametro è la stringa formattata e quindi la variabile.

Il vantaggio di utilizzare la funzione snprintf () è che solo 14 caratteri possono essere stampati e il resto dei caratteri viene ignorato. Il programma sarà sicuro e il programma non si blocca.

Esempio di programmazione 2

In questo esempio di programmazione, vedremo un altro esempio della funzione snprintf ():

#includere
#includere
#define max_buff 1024
#define size_name (15)
typedef struct

nome char [size_name]; // dichiarando una stringa
Insigned Int Rollno;
doppi segni;
ALUNNO ; // Creazione del tipo di dati definito dall'utente
int main (intargc, char *argv [])

char buffer [max_buff] = 0;
Studente S1 = .name = "avishek" , .rollno = 6 , .segni = 77.17;
snprintf (buffer, sizeof (buffer), " %s %d %lf", s1.Nome, S1.Rollno, S1.segni ) ; // usi della funzione snprintf ()
printf ("buffer = %s \ n", buffer);
restituzione 0;

Produzione

Spiegazione

In questo esempio di programmazione, definiremo il nome della struttura ALUNNO. I membri dei dati del ALUNNO sono il nome, il roll no e i segni. All'interno della funzione principale (). Dichiariamo una variabile S1 che è il tipo di dati degli studenti. Se vogliamo stampare il valore di ogni determinazione della variabile S1, useremo la funzione SnPrintf (). I parametri di snprintf sono buffer, dimensioni del buffer, formato della stringa e tutti i membri dei dati che devono essere formattati. Se stampiamo il buffer, l'uscita verrà mostrata al monitor come uscita formattata.

Esempio di programmazione 3

Prendiamo un altro importante esempio della funzione snprintf () e come funziona.

#includere
#includere
#includere
#define size_buffer 1024
#define size_name (20)
#define format_string "(%s,%d,%0.2lf), "
#define size_buffer 1024
#define size_name (20)
#define format_string "(%s,%d,%0.2lf), "
typedef struct

nome char [size_name];
Insigned Int Rollno;
doppia percentuale;
Persona; // Definizione di una struttura.
int main (intargc, char *argv [])

char buffer [size_buffer] = 0; // Dichiarare un buffer.
Person Student_Data [] = .name = "raul", .rollno = 1020, .percentuale = 72.30334, \
.name = "Paul", .rollno = 1021, .percentuale = 86.3456 \
; // Creazione di una serie di struttura.
int Num_Students = sizeof (Student_Data)/sizeof (persona);
int pos = 0;
per (int i = 0; i
pos += snprintf (buffer +pos, sizeof (buffer), format_string, student_data [i].Nome, Student_Data [i].rollno,
Student_data [i].percentuale) ;

printf ("buffer = [ %s] \ n", buffer);
restituzione 0;

Produzione

Spiegazione

Qui, prendiamo una serie di strutture e vediamo il processo di funzione SnPrintf (). Definiamo una struttura denominata PERSONA, e all'interno della funzione principale (), dichiareremo una serie di strutture del PERSONA Tipo di dati e assegnare un certo valore a questo array. Possiamo usare un ciclo per il bancone. Finalmente, stamperemo l'intero buffer con tutti i dati. Stiamo continuamente iterato su questa serie di strutture. Ora salviamo tutti i dati in questo buffer, a seconda della posizione.

Per la prima volta, è arrivato il primo studente e scriverà alcuni dati su questo buffer. Quindi, il valore della posizione cambierà e il buffer scriverà per quella posizione. È così che funziona.

Vantaggio dell'utilizzo della funzione snprintf ()

Il vantaggio di utilizzare la funzione snprintf () è che supponiamo che il buffer sia traboccante dal carattere dalla sua dimensione massima. Il programma sarà sicuro per evitare un incidente. Il resto dei personaggi è ignorato dalla funzione snprintf (), che eseguirà il programma.

Conclusione

Nella lingua C, simile alla funzione printf (), un'altra funzione denominata snprintf () viene utilizzata per formattare la stringa. Per risolvere il problema dell'utilizzo della funzione sprintf (), snprintf () viene portato nella libreria C per rendere il programma più sicuro ed elegante. In questo articolo, abbiamo discusso della funzione snprintf () negli esempi forniti.