Die sprintf()-Funktion in C

Die sprintf()-Funktion in C

Der sprintf() funktioniert genauso wie printf() aber anstatt die Ausgabe an die Konsole zu senden, gibt sie die formatierte Zeichenfolge zurück.

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

Das erste Argument für sprintf() Funktion ist ein Zeiger auf die Zielzeichenfolge. Die restlichen Argumente sind dieselben wie für printf() Funktion.

Die Funktion schreibt die Daten in den String, auf den str zeigt und gibt die Anzahl der in str geschriebenen Zeichen zurück , ohne das Nullzeichen. Der Rückgabewert wird generell verworfen. Wenn während der Operation ein Fehler auftritt, wird -1 zurückgegeben .

Das folgende Programm demonstriert die Verwendung von sprintf() Funktion.

 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;
}

Erwartete Ausgabe:

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

Eine weitere wichtige Verwendung von sprintf() Funktion ist es, Integer- und Float-Werte in Strings umzuwandeln.

 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;
}

Erwartete Ausgabe:

1
2
s1 = 100
s2 = 300.000000