在C/C++中使用sprintf()函数

时间:2020-02-23 14:30:04  来源:igfitidea点击:

在本文中,我们将介绍如何在C/C++中使用sprintf()函数。

如果要将字符从格式字符串写入缓冲区,这是一项重要功能。

让我们使用示例说明一下此功能!

C/C++中sprintf()函数的基本语法

此函数采用格式字符串,并将其写入字符串缓冲区。

这与printf()非常相似,但是将输出写到缓冲区而不是stdout

这个功能存在于<stdio.h>头文件中。

#include <stdio.h>

int sprintf (char* buffer, const char* fmt, ...);

其中这将接收一个输入fmt字符串以及必要的参数(用...表示),并将其存储到buffer中。

如果成功,该函数将返回写入缓冲区的字符数。

如果失败,它将返回一个负整数。

缓冲区的大小必须足够大以容纳字符串!否则,您可以访问未绑定的内存位置。

现在,要完全理解这一点,让我们看一些示例:

使用sprintf()–一些示例

让我们从用户那里获取输入,并使用sprintf()将其连接到字符串上。

#include <stdio.h>

int main() {
  char original[] = "Hello from theitroad";

  char buffer[256];

  printf("Enter an integer:\n");

  int n;
  scanf("%d", &n);

  sprintf(buffer, "%s_%d", original, n);

  printf("Buffer = %s\n", buffer);

  return 0;
}

输出

Enter an integer:
100
Buffer = Hello from theitroad_100

如您所见,我们使用格式字符串将整数直接连接为字符串。

您可能只是意识到在正确的时间使用此功能有多方便!

现在让我们再举一个例子来验证所有字符都已写入缓冲区。

#include <stdio.h>

int main() {
  char original[] = "Hello from theitroad";

  char buffer[25];

  printf("Enter an integer:\n");

  int n;
  scanf("%d", &n);

  int num_written = sprintf(buffer, "%s_%d", original, n);

  printf("Buffer = %s\n", buffer);

  printf("Number of Characters written using sprintf() = %d\n", num_written);

  return 0;
}

输出

Enter an integer:
10
Buffer = Hello from theitroad_10
Number of Characters written using sprintf() = 24

如您所见,写入的字符数(24)与字符串长度相同!