C 冲刺改变左对齐宽度

C sprint change Left-justify width

我需要用sprintf()在字符串中填充space个字符,但是我希望填充的长度可以随着字符串的长度而变化

示例代码函数pcMsgPadding,我想改变sprintf中的left-justify宽度,宽度取决于iLen。

现在固定宽度为20

我该怎么办或者有什么其他办法吗?

示例代码:

#define LCD_COLUMNS 20
char *pcMsgPadding(int iLen, const char* pcMsg)
{
  char *pcBuf = (char*) malloc(LCD_COLUMNS*sizeof(char));
  sprintf(pcBuf, "%-20s", pcMsg);
  return pcBuf;
}

void vDisplay(const char* pcMsg)
{
  printf(pcMsg);
}
void main()
{
  vDisplay(pcMsgPadding(15, "Test Message"));
}

改为sprintf(pcBuf, "%*s", iLen, pcMsg);

整个程序修复了一些问题(添加了包含,删除了 malloc 转换,你不应该在 printf 中使用变量作为第一个参数,main 必须 return int):

#include <stdio.h>
#include <stdlib.h>
#define LCD_COLUMNS 20
char *pcMsgPadding(int iLen, const char* pcMsg)
{
  char *pcBuf = malloc(LCD_COLUMNS*sizeof(char));
  sprintf(pcBuf, "%*s", iLen, pcMsg);
  return pcBuf;
}

void vDisplay(const char* pcMsg)
{
  printf("%s", pcMsg);
}

int main(void) {
    vDisplay(pcMsgPadding(15, "Test Message"));
    return 0;
}