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;
}
我需要用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;
}