La funzione sprintf() in C

La funzione sprintf() in C

Il sprintf() funziona proprio come printf() ma invece di inviare l'output alla console restituisce la stringa formattata.

Sintassi: int sprintf(char *str, const char *control_string, [ arg_1, arg_2, ... ]);

Il primo argomento di sprintf() funzione è un puntatore alla stringa di destinazione. Il resto degli argomenti è lo stesso di printf() funzione.

La funzione scrive i dati nella stringa puntata da str e restituisce il numero di caratteri scritti in str , escluso il carattere nullo. Il valore restituito viene generalmente scartato. Se si verifica un errore durante l'operazione restituisce -1 .

Il seguente programma mostra come usare sprintf() funzione.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
#include<string.h>
int factorial(int );

int main()
{

    int sal;
    char name[30], designation[30], info[60];

    printf("Enter your name: ");
    gets(name);

    printf("Enter your designation: ");
    gets(designation);

    printf("Enter your salary: ");
    scanf("%d", &sal);

    sprintf(info, "Welcome %s !\nName: %s \nDesignation: %s\nSalary: %d",
        name, name, designation, sal);

    printf("\n%s", info);

    // signal to operating system program ran fine
    return 0;
}

Risultato previsto:

1
2
3
4
5
6
7
8
Enter your name: Bob
Enter your designation: Developer
Enter your salary: 230000

Welcome Bob!
Name: Bob
Designation: Developer
Salary: 230000

Un altro uso importante di sprintf() la funzione è convertire valori interi e float in stringhe.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<string.h>
int factorial(int );

int main()
{
    char s1[20];
    char s2[20];

    int x = 100;
    float y = 300;

    sprintf(s1, "%d", x);
    sprintf(s2, "%f", y);

    printf("s1 = %s\n", s1);
    printf("s2 = %s\n", s2);

    // signal to operating system program ran fine
    return 0;
}

Risultato previsto:

1
2
s1 = 100
s2 = 300.000000