例题

例题求助
要求是这的:上下都输出40个*,在这之间是公司的相关信息,要求居中显示

我是这样写的,第一个函数用来输出星号,第二个函数用来计算怎样才能居中。但是不知道第二个函数错在那里了。

求大神指点,谢谢了。


#include <stdio.h>
#include <string.h>
#define NAME "GIGATHINK,INC."
#define ADDRESS "101 Megabuck Plaza"
#define PLACE "Megapolia CA 94904"
#define WIDTH 40

void starbar(void);
void show_n_char(char zh*);

int main(void)
{
starbar();
show_n_char(NAME);
printf("%s\n",NAME);
show_n_char(ADDRESS);
printf("%s\n",ADDRESS);
show_n_char(PLACE);
printf("%s\n",PLACE);
starbar();
return 0;
}

void starbar(void)
{
int count;

for(count = 1;count <= WIDTH;count++)
putchar('*');
putchar('\n');
}

void show_n_char(char zh*)
{
int a,b,i;
a = strlen(zh*);
b = (WIDTH - a)/2;
for(i = 1;i <= b;i++)
putchar(' ');
}

------解决方案--------------------

#include <stdio.h>
#include <string.h>
#define NAME "GIGATHINK,INC."
#define ADDRESS "101 Megabuck Plaza"
#define PLACE "Megapolia CA 94904"
#define WIDTH 40

void starbar(void);
void show_n_char(char *zh);//是char*zh。。*的位置错了。。

int main(void)
{
starbar();
show_n_char(NAME);
printf("%s\n",NAME);
show_n_char(ADDRESS);
printf("%s\n",ADDRESS);
show_n_char(PLACE);
printf("%s\n",PLACE);
starbar();
return 0;
}

void starbar(void)
{
int count;

for(count = 1;count <= WIDTH;count++)
putchar('*');
putchar('\n');
}

void show_n_char(char *zh)
{
int a,b,i;
a = strlen(zh);
b = (WIDTH - a)/2;
for(i = 1;i <= b;i++)
putchar(' ');
}