大家看看这段程序有什么bug解决办法

大家看看这段程序有什么bug
[code=C/C++][/code]
查找||之间的字符串,如果有要替换的字符串,则输出替换过的字符串。
char replace_alias()
{
int idx = 0;
char buff[40];
int found=0;
char c;

c = char_input();
  

while(c!='|')
{
idx=0;
found=0;
memset(buff,0,sizeof(buff));
while(((c>='0' && c<='9')||(c>='a' && c<='z')|| (c>='A' && c<='Z'))&&idx<40)
{
buff[idx]=c;
idx++;
c = char_input();
   
}
if(idx>=40)
{
fprintf(ofs,"%s",buff);
while((c>='0' && c<='9')||(c>='a' && c<='z')|| (c>='A' && c<='Z'))
{
putc(c,ofs);
c = char_input();
   
}
}

for(idx = 0;idx<md_table_length;idx++)
{
if(strcmp(buff,md_table[idx].Name)==0)
{
fprintf(ofs,"%ld",md_table[idx].Code);
found =1;
break;
}
}
if(!found)
{
fprintf(ofs,"%s",buff);
}
while (!((c>='0' && c<='9')||(c>='a' && c<='z')|| (c>='A' && c<='Z')) && c!='|')
{
putc(c,ofs);
c = char_input();
   
}
}

return c;
}

------解决方案--------------------
执行结果是什么?有什么问题么?
------解决方案--------------------
都是很好的建议! 值得学习