看看如何填

看看怎么填?
程序填空,不要改变与输入输出有关的语句。
连续输入一批以   #   结束的字符串(字符串的长度不超过80),遇   ##   则全部输入结束。
对每个字符串做如下处理:滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
例:括号内是说明
输入:
10#Pf4+1#-+A##     (连续输入3个字符串)
输出:
16
3905
10


#include   "stdio.h "
#define   MAXLEN   80
int   main(   )
{     int   i,k;
      long   number;
      char   ch,oldch,str[MAXLEN],   num[MAXLEN];

      oldch= '   ';
      while((ch=getchar())!= '# '||oldch!= '# '){
            k=0;
            while(ch!= '# '&&   k <   MAXLEN-1){
          str[k++]=ch;
          ch=getchar();
            }
            oldch= '# ';             str[k]= '\0 ';
/*---------*/
            printf( "%ld\n ",number);
        }
}

------解决方案--------------------
#include "stdio.h "
#include <iostream.h>
#define MAXLEN 80

long HexToDec(char* p){
long lret = 0;
int val , i;

for(i=0;p[i]!=NULL;i++);

int n = 0;
while(i){
i--;

if (p[i] > = 'A ' && p[i] <= 'F ')
val = 'A ' - 10;
else
if (p[i] > = 'a ' && p[i] <= 'f ')
val = 'a ' - 10;
else
val = '0 ';

val = p[i] - val;

lret += val*(1 < <(4*n));

n++;
}
return lret;
}

int main( )
{ int i,k, j=0;
long number, num[MAXLEN];
char ch,oldch,str[MAXLEN];

oldch= '\0 ';
for(j = 0; j < MAXLEN; num[j++] = -1);
j = 0;
while((ch=getchar())!= '# '||oldch!= '# '){
k=0;
while(ch!= '# '&& k < MAXLEN-1){
if((ch> = '0 ' && ch <= '9 ')
|| (ch> = 'a ' && ch <= 'f ')
|| (ch> = 'F ' && ch <= 'F '))
str[k++]=ch;
ch=getchar();
}
oldch= '# ';
str[k]= '\0 ';
num[j++] = HexToDec(str);
}
// out result -----------------------------------------
for(j = 0; j < MAXLEN && num[j]!= -1 ;j++)
cout < < num[j] < < endl;

system( "PAUSE ");
}