将字符串中的单词放入另一个数组

函数中输入一个字符串,内有英文字母和非英文字母,调用函数getWord(char p, char a[]),处理该字符串,统计所获得的单词总数并返回该值,提取其中的英文单词,并按每行一个的方式输出这些单词。
代码可以运行,但不知道问题出在哪,得不出结果?
#include<stdio.h>
#include<string.h>
int getWord(char p, char a[])
{
int i,count=0,n,m,j=0;
char q[100];
while(
(p+n) != '\0')
{
n++;
}
while(
(p+i)!='\0')
{
for(i=0;i<n;i++)
{
if(!(*(p+i)>='a'&&
(p+i)<='z')||!(*(p+i)>='A'&&
(p+i)<='Z'))
{
if(j!=0)
{
q[j]='\0';
strcpy(a[count],q);
count++;
j = 0;
}
}
else
{
q[j++]=p[i];
}
}
}
return count;
}
int main()
{
char str[100],*s,*t[100];
int i,num;
printf("输入字符串:");
gets(str);
s=str;
num=getWord(s, t);
printf ("共有%d个单词\n", num);
for (i = 0; i < num; ++i){
printf ("%s\n", t[i]);
}
return 0;
}

n初始化了吗?