您可以,正如 Williham Totland 的回答所示,只需计算所需的空间,然后使用printf
. 由于我正在刷新我的知识(虽然它是有限的),所以在内存管理方面,我想出了这个:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int a = 20;
char x[10] = "Hello";
char *spaces_ptr;//padding str pointer
a = (a-strlen(x))/2;
//allocate the required mem, calloc ensures zero terminated
spaces_ptr = calloc(a + 1, sizeof(char));
memset(spaces_ptr, ' ', a);//set a chars to hold spaces
//print
printf("%s%s", spaces, x);
free(spaces);//free memory
return 0;
}
当然,使用sprintf
orstrncat
也是一种选择......甚至:
char *fullStr = calloc(strlen(x) + a + 1, sizeof(char));
memset(fullStr, ' ', a);
strncpy(fullStr+a, x, strlen(x));
puts(fullStr);
free(fullStr);
请注意,最后一个片段是事后才想到的,就像整个答案一样,真的......无论如何检查这个键盘以查看它的实际效果