geekdoc-python-zh/docs/overiq/066.md

1.9 KiB

C 语言中的sprintf()函数

原文:https://overiq.com/c-programming-101/the-sprintf-function-in-c/

最后更新于 2020 年 7 月 27 日


sprintf()的工作方式与printf()类似,但它不是向控制台发送输出,而是返回格式化的字符串。

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

sprintf()函数的第一个参数是指向目标字符串的指针。其余参数与printf()函数相同。

该函数将数据写入str指向的字符串,并返回写入str的字符数,不包括空字符。返回值通常会被丢弃。如果操作过程中出现错误,它将返回-1

下面的程序演示了如何使用sprintf()功能。

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

预期输出:

Enter your name: Bob
Enter your designation: Developer
Enter your salary: 230000

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

sprintf()函数的另一个重要用途是将整数值和浮点值转换为字符串。

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

预期输出:

s1 = 100
s2 = 300.000000