/*
StringInGrid函数会在一个指定大小的格子中打印指定的字符串。
要求字符串在水平、垂直两个方向上都居中。
如果字符串太长,就截断。
如果不能恰好居中,可以稍稍偏左或者偏上一点。
下面的程序实现这个逻辑,请填写划线部分缺少的代码。 对于题目中数据,应该输出: +------------------+
| |
| abcd1234 |
| |
| |
+------------------+
*/ #include <stdio.h>
#include <string.h> void StringInGrid(int width, int height, const char* s)
{
int i,k;
char buf[];
strcpy(buf, s);
if(strlen(s)>width-) buf[width-]=; printf("+");
for(i=;i<width-;i++) printf("-");
printf("+\n"); for(k=; k<(height-)/;k++){
printf("|");
for(i=;i<width-;i++) printf(" ");
printf("|\n");
} printf("|"); printf("%*s%s%*s",/*(width-strlen(buf)-2)/2,"",buf,(width-strlen(buf)-2+1)/2,""*/); //填空 printf("|\n"); for(k=(height-)/+; k<height-; k++){
printf("|");
for(i=;i<width-;i++) printf(" ");
printf("|\n");
} printf("+");
for(i=;i<width-;i++) printf("-");
printf("+\n");
} int main()
{
StringInGrid(,,"abcd1234");
return ;
}
tz@COI HZAU
2018/3/14